2011-12-17 36 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