2010-03-16 45 views
11

有人可以幫助我與NSPredicate一起使用Regex嗎?NSPredicate和正則表達式

NSString *regex = @"(?:[A-Za-z0-9])"; 
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 
if ([pred evaluateWithObject:mystring]) 
{ 
    //do something 
} 

測試上面的wth mystring - qstring123似乎不工作。我期待它進入if條件,因爲它應該匹配正則表達式。

此外,我需要一個允許逗號和空格的alpha數字的正則表達式。

這項工作?

@"(?:[A-Za-z0-9])*(?:,[A-sa-z0-9)*(?:\s[A-sa-s0-9])" 

請幫忙。

回答

8

從我的實驗中,它試圖匹配整個字符串的正則表達式,並且不會匹配字符串內部。

因此,正則表達式[a-zA-Z0-9]+工程,但[a-zA-Z0-9]沒有。有鑑於此,您可能希望重新使用逗號匹配謂詞,或使用更全面的正則表達式解決方案,如令人驚歎的RegexKit and RegexKitLite

+0

最後我錯過了+。我實際上使用*,它的工作。有什麼不同? – Dave 2010-03-16 23:53:57

+2

'*'匹配0次或更多次,'+'匹配1次或更多次。 – 2010-03-16 23:54:27