如何使用JavaScript验证我的URL效率?

时间:2012-07-10 09:55:04

标签: javascript regex

我的正则表达式成功验证了除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是不正确的。我该如何验证该案例?

1 个答案:

答案 0 :(得分:1)

我认为你需要简化这一点。那里有很多URL验证RegExes,但作为练习,我将完成构建一个的思考过程。

  1. 首先,如果有协议,您需要匹配协议:/((http|ftp)s?:\/\/)?
  2. 然后匹配任何系列的非空白字符:\S+
  3. 如果您尝试从文本中选择网址,则需要查找其是网址的迹象。寻找点或斜线,然后是更多的非空白:[\.\/]\S*/
  4. 现在把它们放在一起:

    /(((http|ftp)s?:\/\/)|(\S+[\.\/]))\S*[^\s\.]*/
    

    我猜你试图寻找www.google是因为新TLD ...事实上,这样的网址可能看起来像google,因此任何字词都可能是URL。试图提出一个匹配有效URL的全能正则表达式是不可能的,所以你最好只使用像上面那样简单的东西。

    编辑:我在协议部分和非空白点后斜杠部分之间插入|以匹配http://google人们选择写这样的新网址

    编辑2 :查看下一项改进的评论。它确保google.com匹配,http://google匹配,甚至google/匹配,但不是a.