2010-03-16 135 views
11

有人可以帮助我与NSPredicate一起使用Regex吗?NSPredicate和正则表达式

NSString *regex = @"(?:[A-Za-z0-9])"; 
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 
if ([pred evaluateWithObject:mystring]) 
{ 
    //do something 
} 

测试上面的wth mystring - qstring123似乎不工作。我期待它进入if条件,因为它应该匹配正则表达式。

此外,我需要一个允许逗号和空格的alpha数字的正则表达式。

这项工作?

@"(?:[A-Za-z0-9])*(?:,[A-sa-z0-9)*(?:\s[A-sa-s0-9])" 

请帮忙。

回答

8

从我的实验中,它试图匹配整个字符串的正则表达式,并且不会匹配字符串内部。

因此,正则表达式[a-zA-Z0-9]+工程,但[a-zA-Z0-9]没有。有鉴于此,您可能希望重新使用逗号匹配谓词,或使用更全面的正则表达式解决方案,如令人惊叹的RegexKit and RegexKitLite

+0

最后我错过了+。我实际上使用*,它的工作。有什么不同? – Dave 2010-03-16 23:53:57

+2

'*'匹配0次或更多次,'+'匹配1次或更多次。 – 2010-03-16 23:54:27