-5

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

但有时它没有验证。

4

1 回答 1

2

这是我的做法:

让我们看一个网址:

https://some.long.domain.with.subdomains.com:12345/otherpath?queryparam=queryvalue

让我们用这个字符串初始化 NSURL:

NSURL *url = [NSURL URLWithString:theStringFromAbove];

如果 URL 无效,则该url变量将为 nil。否则,抓取一个端口并检查它是否是我们需要的:

if (!url || [url port] != 12345) {
    NSLog(@"YOU SHALL NOT PASS");
}
于 2012-09-26T09:31:05.563 回答