用于匹配简单URL的正则表达式无法正常工作

时间:2014-10-06 14:36:17

标签: javascript regex url

我试图制作一个简单的正则表达式来匹配简单的URL(没有URL参数等) 它似乎工作,但仍有一些问题..

这是我的正则表达式:

/(https|http|ftp):\/\/((-|[a-z0-9])+\.)+(com|org|net)\/?((-|[a-z0-9]\/?)+(-|[a-z0-9])*\.(css|js))?/ig


在这个小清单中,您可以看到哪些不能正常工作:

HTTP://q-2Ud.a.q-2Ud.com/
https://q-2Ud.q-2Ud.q-2Ud.com
http://www.q-2Ud.q-2Ud.q-2Ud.com
http://www.q-2Ud.q-2Ud.q-2Ud.com/c ------------------------------------> NOT WORK
http://www.q-2Ud.q-2Ud.q-2Ud.com/cs -----------------------------------> NOT WORK
http://www.q-2Ud.q-2Ud.q-2Ud.com/css ----------------------------------> NOT WORK
http://www.q-2Ud.q-2Ud.q-2Ud.com/csss ---------------------------------> NOT WORK
http://www.q-2Ud.q-2Ud.q-2Ud.com/csss/css -----------------------------> NOT WORK
http://www.q-2Ud.q-2Ud.q-2Ud.com/css/yuyuyu/gyygug.css
http://www.q-2Ud.q-2Ud.q-2Ud.com/h/.css -------------------------------> NOT WORK
http://www.q-2Ud.q-2Ud.q-2Ud.com/.css
http://www.q-2Ud.q-2Ud.q-2Ud.com/k.css
http://www.q-2Ud.q-2Ud.q-2Ud.com/kk.css
http://www.q-2Ud.q-2Ud.q-2Ud.com/kkk.css
http://www.q-2Ud.q-2Ud.q-2Ud.com/f-1.css
http://www.q-2Ud.q-2Ud.q-2Ud.com/o/o.css
http://www.q-2Ud.q-2Ud.q-2Ud.com/d-1/d-2/d-3/d-4/f-1.css
http://www.q-2Ud.q-2Ud.q-2Ud.com/q-2Ud/q-2Ud/q-2Ud/q-2Ud/q-2Ud.js

Demo Here

3 个答案:

答案 0 :(得分:1)

匹配.css或.js结尾的网址。 删除\.(css|js),它应该可以正常工作

答案 1 :(得分:0)

/(https|http|ftp):\/\/((-|[a-z0-9])+\.)+(com|org|net)\/?\.?((-|[a-z0-9]\/?)+(-|[a-z0-9])*\/?(\.css|\.js)?)?/ig

这可能会抓住你所缺少的所有

答案 2 :(得分:0)

只需要在保持有效性的同时更好地安排小组 这被修剪为仅捕获没有分隔符的主要4个部分。

修改:如果您不想在没有文件名的情况下匹配.js.css,请使用此正则表达式 - >

(?i)(https|http|ftp)://((?:[a-z0-9-]+\.)+(?:com|org|net))(?:/(?:([a-z0-9-]+(?:/?[a-z0-9-])*(?:\.(css|js))?))?)?

另外使用这个 - >

 # /(?i)(https|http|ftp):\/\/((?:[a-z0-9-]+\.)+(?:com|org|net))(?:\/(?:([a-z0-9-]+(?:\/?[a-z0-9-])*)\/?)?(?:\.(css|js))?)?/

 (?i)
 ( https | http | ftp )        # (1)
 ://
 (                             # (2 start)
      (?:
           [a-z0-9-]+ 
           \.
      )+

      (?: com | org | net )
 )                             # (2 end)
 (?:
      /
      (?:
           (                             # (3 start)
                [a-z0-9-]+ 
                (?:
                     /? 
                     [a-z0-9-] 
                )*
           )                             # (3 end)
           /?
      )?
      (?:
           \.
           ( css | js )                  # (4)
      )?
 )?