Как проверить соответствие строки регулярному выражению в objective-c?

поскольку регулярные выражения не поддерживаются в Cocoa. Я очень хорошо нахожу RegexKitLite. Но все примеры извлекают соответствующие строки.

Я просто хочу проверить, соответствует ли строка регулярному выражению, и получить Да или Нет.

Как я могу это сделать?

Ответ 1

Я использовал NSPredicate для этой цели:

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

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

Ответ 2

Другой способ сделать это, что немного проще, чем использование 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.

Ответ 3

Используйте метод -isMatchedByRegex:.

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