Как проверить, соответствует ли строка регулярному выражению в ta rget-c?
Поскольку регулярные выражения не поддерживаются в Какао, я считаю RegexKitLite очень полезным. Но все примеры извлекают совпадающие строки.
Я просто хочу проверить, соответствует ли строка регулярному выражению и получить Да или Нет.
Как я могу это сделать?
4 ответа
Я использовал 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 - это еще один вариант: