Aşağıdaki -100..100:0.01
ile eşleşen normal bir ifade arıyorum. Bu ifadenin anlamı, değerin 0,01 artması ve -100 ile 100 aralığında olması olabilir.iOS'ta normal ifade
Herhangi bir yardım?
Aşağıdaki -100..100:0.01
ile eşleşen normal bir ifade arıyorum. Bu ifadenin anlamı, değerin 0,01 artması ve -100 ile 100 aralığında olması olabilir.iOS'ta normal ifade
Herhangi bir yardım?
(\b|-)(100(\.0+)?|[1-9]?[0-9](\.[0-9]{1,2})?\b
Açıklama:
(\b|-) # word boundary or -
( # Either match
100 # 100
(\.0+)? # optionally followed by .00....
| # or match
[1-9]? # optional "tens" digit
[0-9] # required "ones" digit
( # Try to match
\. # a dot
[0-9]{1,2}# followed by one or two digits
)? # all of this optionally
) # End of alternation
\b # Match a word boundary (make sure the number stops here).
if(val>= -100 && val <= 100)
{
NSString* valregex = @"^[+|-]*[0-9]*.[0-9]{1,2}";
NSPredicate* valtest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", valregex];
ret = [valtest evaluateWithObject:txtLastname.text];
if (!ret)
{
[alert setMessage:NSLocalizedString(@"More than 2 decimals", @"")];
[alert show];
}
}
çabaları çocuklar için gayet .. Thnx çalışıyor!
Neden düzenli bir ifade kullanmak istiyorsunuz? Neden sadece (pseudocode) gibi bir şey yapamaz:
is number between -100 and 100?
yes:
multiply number by 100
is number an integer?
yes: you win!
no: you don't win!
no:
you don't win!
yerine NSRegularExpression
kullanabilirsiniz.
NSString *regex = @"\\b-?1?[0-9]{2}(\\.[0-9]{1,2})?\\b";
rağmen, ben \\W
daha iyi bir fikir olacağını düşünüyorum, \\b
messes kadar numarasına eksi işareti tespit başlangıcı: Eğer dizede ondan kaçmak zorunda olsa o, btw \b
desteklemez.
bir umutla daha iyi örnek:
NSString *string = <...your source string...>;
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"\\W-?1?[0-9]{2}(\\.[0-9]{1,2})?\\W"
options:0
error:&error];
NSRange range = [regex rangeOfFirstMatchInString:string
options:0
range:NSMakeRange(0, [string length])];
NSString *result = [string substringWithRange:range];
umarım bu yardımcı olur.
DÜZENLEME: aşağıdaki yoruma göre sabitlenmiştir.
"NSRange * aralığı" güzel düzenlemesi "NSRange aralığı" olmalıdır – Arnaud
'Bu olayı normal ifadede çalışmak istiyor' demek? –
, iOS uygulamamda değerlendirebileceğim normal bir ifade almak istiyor. – Cannon
'-100..100: 0.01' bir literal temsili mi, yoksa bazı örnekler verebilir misiniz? Aksi halde, zaman kaybıdır. – sln