我的正则表达式成功验证了除http://www.google
这是我在JSFiddle中的URL验证器:http://jsfiddle.net/z23nZ/2/
它正确验证了以下网址:
http://www.google.com
提供 True
www.google.com
提供 True
http://www.rootsweb.ancestry.com/~mopoc/links.htm
提供 True
http:// www.
提供错误
......但不是这一个:
http://www.google
提供 True
在这种情况下返回true是不正确的。我该如何验证该案例?
答案 0 :(得分:1)
我认为你需要简化这一点。那里有很多URL验证RegExes,但作为练习,我将完成构建一个的思考过程。
/((http|ftp)s?:\/\/)?
\S+
[\.\/]\S*/
现在把它们放在一起:
/(((http|ftp)s?:\/\/)|(\S+[\.\/]))\S*[^\s\.]*/
我猜你试图寻找www.google
是因为新TLD ...事实上,这样的网址可能看起来像google
,因此任何字词都可能是URL。试图提出一个匹配有效URL的全能正则表达式是不可能的,所以你最好只使用像上面那样简单的东西。
编辑:我在协议部分和非空白点后斜杠部分之间插入|
以匹配http://google
人们选择写这样的新网址
编辑2 :查看下一项改进的评论。它确保google.com
匹配,http://google
匹配,甚至google/
匹配,但不是a.
。