0
工作,我需要檢查閹我的字符串這個正則表達式匹配:\+?\d{0,3}
(這種模式已經在這裏測試:http://regexpal.com,似乎沒事)正則表達式模式不會在Objective-C
這是我做的:
NSString * proposedNewString = @"+3";
NSString * pattern = @"\\+?\\d{0,3}";
NSError * err = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&err];
if (err) {
NSLog(@"Couldn't create regex with given string and options");
return NO;
}
NSPredicate * myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES '%@'", regex];
NSLog(@"proposed str = %@", proposedNewString);
if ([myTest evaluateWithObject:proposedNewString]) {
NSLog(@"yes");
}
else {
NSLog(@"no");
}
我希望它打印出來yes
,但由於某種原因它打印no
。也許我搞亂了反斜槓或引號。我究竟做錯了什麼?
時,我只是沒有附上'%@'我的應用程序崩潰消息'2014-09-01 19:48:30.518 MyApp [6686:60b]建議str = + 3' '2014-09-01 19:48:30.520 MyApp [6686:60b] ***終止應用到期未捕獲異常「NSInvalidArgumentException」,原因:'不能從對象 \ +?\ d {0,3} 0x1.''創建一個正則表達式表達式,但是除了'evaluateWit hObject:'你的'numberOfMathcesInString:options:range'似乎是工作。非常感謝你的幫助。 –
2014-09-01 17:00:49
@MikhailZinkovsky:請再看看我的答案的第一部分。對於'predicateWithFormat',你必須傳遞* pattern字符串*'pattern',而不是正則表達式'regex'。我測試了這個代碼,它對我很有用。 – 2014-09-01 17:03:09
是的,你是完全正確的,這是我愚蠢的失敗。萬分感謝。 – 2014-09-01 17:16:52