2011-12-17 78 views
1

我想匹配一個URL模式,但它沒有任何匹配。基本上,任何雅虎都是允許的,例如ca.yahoo.com是允許的。它適用於此,但它不適用於簡單的yahoo.com。這裏是我的代碼:NSPredicate matching

NSString *string = @"http://yahoo.com/"; 
NSString *regex = @"^http://.*\\.yahoo.com/.*$"; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES[C] %@", regex]; 
BOOL match = [predicate evaluateWithObject:string]; 

NSLog(@"%@", match? @"MATCH" : @"NO LUCK"); 

印刷品沒有運氣

回答

1

的問題是,只是雅虎之前的時期是不可選的。這裏是一個版本,使得前面的可選整:

NSString *regex = @"^http://(.*\\.)*yahoo.com/.*$"; 

下面是使用rangeOfString:一個簡單的方法:

NSString *string = @"http://yahoo.com/"; 
NSString *regex = @"^http://(.*\\.)*yahoo.com/.*$"; 

NSRange range = [string rangeOfString:regex options:NSRegularExpressionSearch]; 
NSLog(@"%@", range.location!=NSNotFound? @"MATCH" : @"NO LUCK"); 

的NSLog輸出:

MATCH