在iOS中正则expression式

我正在寻找一个正则expression式匹配以下-100..100:0.01 。 这个expression式的含义是,该值可以递增0.01,并且应该在-100至100的范围内。

任何帮助?

你可以使用NSRegularExpression来代替。 它支持\b ,顺便说一句,虽然你必须在string中转义它:

 NSString *regex = @"\\b-?1?[0-9]{2}(\\.[0-9]{1,2})?\\b"; 

尽pipe如此,我认为\\W会是一个更好的主意,因为\\b检测到数字上的负号。

一个希望更好的例子:

 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]; 

我希望这有帮助。 🙂

编辑:根据下面的评论固定。

 (\b|-)(100(\.0+)?|[1-9]?[0-9](\.[0-9]{1,2})?\b 

说明:

 (\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). 

你为什么要使用正则expression式? 为什么不只是做一些像(在伪代码):

 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! 
  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]; } } 

工作正常.. thnx为努力的家伙!