NSPredicate和正则表达式

11

有人能帮我使用Regex和NSPredicate吗?

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

使用mystring - qstring123进行上述测试似乎不起作用,我希望它能够进入if条件语句,因为它应该与正则表达式匹配。

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

这个正则表达式可以吗?

@"(?:[A-Za-z0-9])*(?:,[A-sa-z0-9)*(?:\s[A-sa-s0-9])"
请帮忙。
1个回答

8

根据我的实验,它会尝试将正则表达式与整个字符串匹配,而不会在字符串内部匹配。

因此,正则表达式[a-zA-Z0-9]+是有效的,但[a-zA-Z0-9]则不行。

考虑到这一点,您可能需要重新设计逗号匹配谓词,或者使用更全面的正则表达式解决方案,例如令人惊叹的RegexKit和RegexKitLite


我错了,末尾应该加上 + 号。但我实际使用 * 号也可以工作。这两种符号有什么区别? - Dave
2
  • 匹配0次或多次,+ 匹配1次或多次。
- Dave DeLong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接