Ответ 1
Я использовал NSPredicate для этой цели:
NSString *someRegexp = ...;
NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", someRegexp];
if ([myTest evaluateWithObject: testString]){
//Matches
}
поскольку регулярные выражения не поддерживаются в Cocoa. Я очень хорошо нахожу RegexKitLite. Но все примеры извлекают соответствующие строки.
Я просто хочу проверить, соответствует ли строка регулярному выражению, и получить Да или Нет.
Как я могу это сделать?
Я использовал NSPredicate для этой цели:
NSString *someRegexp = ...;
NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", someRegexp];
if ([myTest evaluateWithObject: testString]){
//Matches
}
Другой способ сделать это, что немного проще, чем использование 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.
Используйте метод -isMatchedByRegex:
.
if([someString isMatchedByRegex:@"^[0-9a-fA-F]+:"] == YES) { NSLog(@"Matched!\n"); }
NSRegularExpression - еще один вариант: