如果用户输入了google
,那么
我需要添加http://www.
google .com
,即缺少部分。
用户可以输入任何说google.in
或www.google
或anything
的内容。
现在goal
到complete
left over
url
,因为我们使用正则表达式检查网址:
NSString *urlRegEx = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
给定的网址是否有效
答案 0 :(得分:1)
不要忘记带有.co.uk
,.co.us
,.com.co
等后缀的第三级域名。
完全限定的域名必须至少有一个点。如果它没有至少一个点,那么您可以在末尾添加.com
。
如果它至少有一个点,则会变得更复杂。 .google
可能是未来的顶级域名,但现在不是。也许您想要保留所有“有效”的一级和二级域名的白名单。您从右侧评估输入的域名,直到它停止匹配列表中的域。其余部分是“注册”域名和任何子域。如果找不到任何匹配项,请添加.com
。
或者,您可以尝试解析域名,而不是解析域名,如果不解析,则添加.com
并重试。
答案 1 :(得分:0)
我想我知道你问的是什么,除了正则表达式你是如何实际验证URL是有效的?看起来好像假设所有URL都遵循通用语法。例如,http://www.www.extra-www.org/是一个有效的网址,因此如果您应用正则表达式(因为我理解您的意图),用户将转到http://www.extra-www.org,这可能与用户想要的网站不同({3}}即使在这种情况下,它是因为它转发)。另一个例子是http://www.www.com ...如果用户输入“www”,你的正则表达式将杀死它。最后一个例子是,如果某个网站没有在“www”中注册其DNS,您的正则表达式将错误地添加“www”部分。
编辑:如果用户需要https而不是http并且只输入“google”会发生什么?
答案 2 :(得分:0)
我自己还没有尝试过这个,但类型NSDataDetector
的{{1}}应该可以为你做一份体面的工作。