我正在尝试使用NSDataDetector验证来自文本字段的提供的URL,如果我输入包含" http://"的URL,它总是返回有效的。在任何文本的前面。
i.e. http://someurl, http://someotherurl, etc.
仅供参考 - 虽然网络浏览器能够使用上述格式解释网址,但每次使用此格式时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
})
答案 0 :(得分:2)
根据RFC 1304 Section 3.5,有效的域名扩展(在http://
协议说明符之后)可以如下:
<domain> ::= <subdomain> | " "
<subdomain> ::= <label> | <subdomain> "." <label>
<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
基本上,这意味着.
不是域名的要求。一个非常常见的例子是http://localhost
,其中不包含.
。
答案 1 :(得分:0)
因为there are new top level domains like .google and .apple所以现在只包含“apple”的网址实际上可能是有效的网址。
事实上,如果我输入http://apple
,这个看似简单的有效网址实际上已在Firefox中成功解析。