在目标c中使用端口的url的正则表达式

时间:2011-03-07 21:46:35

标签: iphone objective-c xcode url

这是我正在使用的代码,它验证了我提供的99%的URL,但是当URL中的IP地址后面有一个“:port”时,它会失败。

-(BOOL) validateUrl: (NSString *) candidate {


//NSString *urlRegEx=@"(http|https)://(((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+)|(";
NSString *urlRegEx = @"^(http|https|ftp)\://(([a-zA-Z0-9-.]+\.[a-zA-Z]{2,3})|([0-2]*\d*\d\.[0-2]*\d*\d\.[0-2]*\d*\d\.[0-2]*\d*\d))(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9-._\?\,\'/\+&%\$#\=~])*[^.\,)(\s]$";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
return [urlTest evaluateWithObject:candidate];

}

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

为什么不使用NSURL?尝试使用URLWithString:创建一个网址,如果它返回nil,则表示您的网址格式错误。如果您没有获得nil,那么您可以检查主机,端口等。