这是我正在使用的代码,它验证了我提供的 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];
感谢您的帮助!
最佳答案
为什么不使用 NSURL
?尝试使用 URLWithString:
创建一个 URL,如果它返回 nil,则您的 URL 格式不正确。如果没有返回nil,那么可以查看主机、端口等。
关于iphone - Objective c 中带有端口的 url 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5225667/