在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为努力的家伙!
- 为什么正则expression式返回范围值?
- 使用正则expression式匹配emojis以及string中的文本
- 正则expression式在iOS上不能正常工作
- 在Objective-C中parsing以@和#开头的string
- Swift – 如何使用Firebase中的“shouldChangeTextInRange”进行实时search?
- 密码validation的正则expression式Objective-C
- Swift正则expression式格式?
- 电话号码格式应该是国际性的,在iPhone中是否有用于电话号码validation的正则expression式
- Cocoa错误2048在cocoa中使用NSRegularExpression