我想用端口验证url,所以我需要正则表达式来验证它。 目前我正在使用这个表达。
NSString *urlRegEx =@"(?i)(?:(?:https?|http):\\/\\/)?(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?";
但有时无法验证。
答案 0 :(得分:2)
我是这样做的:
我们来一个网址:
https://some.long.domain.with.subdomains.com:12345/otherpath?queryparam=queryvalue
让我们用这个字符串初始化NSURL:
NSURL *url = [NSURL URLWithString:theStringFromAbove];
如果网址无效,则url
变量将为零。否则,抓住一个端口并检查它是否是我们需要的:
if (!url || [url port] != 12345) {
NSLog(@"YOU SHALL NOT PASS");
}