-1

拜托我需要你的帮忙。这里我写了部分代码,找不到,我的错误在哪里:

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/

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

4

3 回答 3

2

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

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

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

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

于 2013-09-11T06:00:28.083 回答
1

我认为您必须将正则表达式更改为[[a-z]*]

于 2013-09-11T06:18:35.533 回答
0

如果您的输入是 1111,您可以尝试一下...

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

供参考,您可以访问这里。

于 2013-09-11T05:47:18.740 回答