1

如果用户输入google,那么

我需要添加http://www.谷歌.com 即缺少的部分。

用户可以输入任何东西说google.inwww.googleanything

现在我们使用正则表达式检查 url,如下所示goalcompleteleft over url

NSString *urlRegEx = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";

给定的网址是否有效

4

3 回答 3

1

.co.uk不要忘记带有, .co.us,.com.co等后缀的三级域名。

完全限定的域名必须至少有一个点。如果它没有至少一个点,那么你可以添加.com到最后。

如果它确实有至少一个点,那么它会变得更加复杂。.google将来可能是顶级域,但现在不是。也许您想保留所有“有效”一级和二级域名的白名单。您从右侧评估输入的域名,直到它停止匹配您列表中的域。其余的是“注册”域名和任何子域。如果找不到任何匹配项,请添加.com.

或者,您可以尝试解析域名,而不是解析域名,如果无法解析,则添加.com并重试。

于 2013-07-23T13:26:57.987 回答
0

我想我知道您在问什么,但是除了正则表达式之外,您实际上如何验证 URL 是否有效?似乎您错误地假设所有 URL 都遵循通用语法。例如,http ://www.www.extra-www.org/是一个有效的 URL,因此如果您应用正则表达式(据我了解您的意图),用户将访问http://www.extra-www。 org可能与用户想要的站点不同(即使在这种情况下是因为它转发)。另一个例子是http://www.www.com ...如果用户输入“www”,您的正则表达式将杀死它。最后一个例子是,如果一个站点没有使用“www”注册其 DNS - 您的正则表达式将错误地添加“www”部分。

编辑:如果用户需要 https 而不是 http 并且只输入“google”会发生什么?

于 2013-07-23T13:29:51.247 回答
0

我自己还没有尝试过这个,但是NSDataDetectorfor 类型NSTextCheckingTypeLink应该可以为你做一份体面的工作。

于 2013-07-23T22:19:19.233 回答