1

我正在尝试使用 NSDataDetector 从文本字段验证提供的 URL,如果我在任何文本的前面输入包含“http://”的 URL,它总是返回有效。

i.e. http://someurl, http://someotherurl, etc.

仅供参考- 尽管网络浏览器能够使用上述格式解释 url,但 NSURL 每次使用这种格式时都会返回错误。由于我需要在我的应用程序中使用提供的 URL 调用操作,因此在从提供的 URL 文本创建 NSURL 时它必须是有效的。

关于如何纠正这个问题的任何想法,因为这些网址并不真正有效?

这是我的代码:

   linkDetector = NSDataDetector(types: NSTextCheckingType.Link.rawValue, error: nil)
    linkDetector?.enumerateMatchesInString(self.textField.text, options: NSMatchingOptions(0), range: NSMakeRange(0, countElements(urlString!)), usingBlock: { (result: NSTextCheckingResult!, flags, stop) -> Void in
            self.validatedUrlString = self.textField.text
    })
4

2 回答 2

2

根据RFC 1304 第 3.5 节,有效的域名扩展(在http://协议说明符之后)可能如下:

<domain> ::= <subdomain> | " "
<subdomain> ::= <label> | <subdomain> "." <label>
<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]

从本质上讲,这意味着这.不是对域名的要求。一个非常常见的例子是http://localhost它包含 no .

于 2014-11-13T21:15:06.483 回答
0

因为有像 .google 和 .apple 这样的新顶级域,所以现在只包含“apple”的 URL 实际上可能是一个有效的 URL。

事实上,如果我输入http://apple,那个看似普通的有效 URL 实际上会在 Firefox 中成功解析。

于 2014-11-13T21:01:24.843 回答