具有端口验证目标的URL -c

时间:2012-09-26 09:27:56

标签: objective-c xcode4.3

我想用端口验证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]*)?";

但有时无法验证。

1 个答案:

答案 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");
}