如何检查字符串是否与objective-c中的正则表达式匹配?

时间:2011-04-25 09:24:50

标签: objective-c regexkitlite

由于Cocoa不支持常规展示,我发现RegexKitLite非常有用。 但所有示例都提取匹配字符串。

我只想测试一个字符串是否与正则表达式匹配并得到是或否。

我该怎么做?

4 个答案:

答案 0 :(得分:55)

我为此目的使用了NSPredicate:

NSString *someRegexp = ...; 
NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", someRegexp]; 

if ([myTest evaluateWithObject: testString]){
//Matches
}

答案 1 :(得分:22)

另一种方法是使用NSPredicate比使用NSRange range = [string rangeOfString:@"^\\w+$" options:NSRegularExpressionSearch]; BOOL matches = range.location != NSNotFound; 更简单,这是NSString的-rangeOfString:options:几乎没有文档的选项:

-rangeOfString...

我说"几乎没有记录",因为该方法本身并没有将该选项列为可用,但是如果您发现搜索和比较运算符的文档并找到NSRegularExpressionSearch从OS X 10.7和iOS 3.2开始,您会发现它是{{1}}方法的有效选项。

答案 2 :(得分:3)

答案 3 :(得分:3)

使用-isMatchedByRegex:方法。

if([someString isMatchedByRegex:@"^[0-9a-fA-F]+:"] == YES) { NSLog(@"Matched!\n"); }