NSRegularExpression工作不正确

时间:2013-09-11 05:42:01

标签: iphone ios objective-c regex nsregularexpression

我需要你的帮助。 在这里,我编写了部分代码,但无法找到,我的错误在哪里:

NSString *inputString =@"11111111111";
NSError *error = nil;
NSRegularExpression *regExpression = [NSRegularExpression regularExpressionWithPattern:@"[[a-zA-Z]]*"
                                                                          options:NSRegularExpressionCaseInsensitive error:&error];

NSUInteger numberOfMatches = [regExpression numberOfMatchesInString:inputString
                                                            options:0
                                                              range:NSMakeRange(0, [inputString length])];

NSLog(@"numberOfMatches=%d", numberOfMatches); 
// here shows  "numberOfMatches = 7"

但是在这里检查了结果,答案是不正确的! http://gskinner.com/RegExr/

所以问题:我的错误在哪里?

3 个答案:

答案 0 :(得分:2)

我不知道你为什么只得到7场比赛,我认为应该有12场比赛。你没有指定任何要求,所以我做了一些猜测:

问题在于量词*。它匹配0或更多,意味着[[a-zA-Z]]*如果找到0个字符(空字符串)它也会匹配,并且在每个数字之前和字符串末尾都会找到一个空字符串。

可能它会帮助您使用+量词,它匹配1或更多。也许正则表达式[a-z]+就是你想要的。

顺便说一下。 [[a-zA-Z]]*很可能是错误的,我想你想[a-zA-Z]。另一件事是,当你使用options:NSRegularExpressionCaseInsensitive时,你不需要在你的角色类中指定大写和小写字母,[a-z]就可以了。

答案 1 :(得分:1)

我认为您必须将RegularExpression更改为[[a-z]*]

答案 2 :(得分:0)

如果你的输入是1111 ......

,你可以尝试一下
NSRegularExpression * regExpression = [NSRegularExpression 
regularExpressionWithPattern:@"\\W-?1?[0-9]{2}(\\.[0-9]{1,2})?\\W"
                   options:0
                     error:&error];

供参考,您可以访问here.