我需要你的帮助。 在这里,我编写了部分代码,但无法找到,我的错误在哪里:
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/
所以问题:我的错误在哪里?
答案 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.