33

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

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

我怎样才能做到这一点?

4

4 回答 4

59

我为此目的使用了 NSPredicate :

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

if ([myTest evaluateWithObject: testString]){
//Matches
}
于 2011-04-25T09:28:13.900 回答
26

另一种比 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。

于 2013-02-17T00:59:43.257 回答
3

NSRegularExpression 是另一种选择:

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

于 2011-05-27T22:18:28.780 回答
2

使用-isMatchedByRegex:方法。

if([someString isMatchedByRegex:@"^[0-9a-fA-F]+:"] == YES) { NSLog(@"Matched!\n"); }
于 2011-05-28T06:33:57.647 回答