由于 Cocoa 不支持常规表达式,我发现RegexKitLite非常有用。但是所有示例都提取匹配的字符串。
我只想测试一个字符串是否与正则表达式匹配并得到是或否。
我怎样才能做到这一点?
我为此目的使用了 NSPredicate :
NSString *someRegexp = ...;
NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", someRegexp];
if ([myTest evaluateWithObject: testString]){
//Matches
}
另一种比 using 更简单NSPredicate
的方法是 NSString 方法的一个几乎未记录的选项-rangeOfString:options:
:
NSRange range = [string rangeOfString:@"^\\w+$" options:NSRegularExpressionSearch];
BOOL matches = range.location != NSNotFound;
我说“几乎没有记录”,因为该方法本身并没有列出可用的选项,但是如果您碰巧在搜索和比较运算符的文档中发现NSRegularExpressionSearch
它是-rangeOfString...
自 OS X 以来方法的有效选项10.7 和 iOS 3.2。
NSRegularExpression 是另一种选择:
使用-isMatchedByRegex:
方法。
if([someString isMatchedByRegex:@"^[0-9a-fA-F]+:"] == YES) { NSLog(@"Matched!\n"); }