使用URL检查正则表达式的Javascript URL正则表达式

时间:2011-11-29 09:35:28

标签: javascript regex

我有这个网址......

http://www.google.com/local/add/analytics?hl=en-US&gl=US

我想查看这些网址,看看它们是否符合以上网址...

www.google.com/local/add*
www.google.com/local/add/*
http://www.google.com/local/add*
http://www.google.com/local/add/*
https://www.google.com/local/add*
https://www.google.com/local/add/*

你可以看到输入的URL也是一个正则表达式*所以我可以用什么正则表达式来匹配一个带有正则表达式的URL列表,看看网址是否存在?目前我正在这样做......

var isAllowed = (url.indexOf(newURL) === 0);

这绝对没有效率。

3 个答案:

答案 0 :(得分:1)

这不是我写过的最干净的正则表达式,但我认为它应该有效。

var url = "http://www.google.com/local/add/analytics?hl=en-US&gl=US";
var reg = /((https|http|)(\:\/\/|)www\.google.com\/local\/add(\/|)).*/;
console.log(reg.test(url));

对于所有这些情况都会返回

  

www.google.com/local/add*
  www.google.com/local/add/*
  http://www.google.com/local/add *
  http://www.google.com/local/add/ *
  https://www.google.com/local/add *
  https://www.google.com/local/add/ *

应该寻找(httphttps或什么都没有)然后(://或什么都没有)然后www.google.com/local/add然后({{1什么都没有。

一个案例它也将返回true,我将离开你的情况是/

答案 1 :(得分:1)

var reg = new RegExp("(https?://)?(www.)?google.com/local/add/?"),
    URL = "http://www.google.com/local/add/analytics?hl=en-US&gl=US";

console.log(reg.test(URL));

我经常使用?,这意味着问号前面的任何字符都可能匹配,也可能不匹配。

https?表示s可能存在也可能不存在。 (www.)?表示www.可能完全缺席。你希望现在能得到它的工作原理。

Demo

Learn how to use Regular Expressions

答案 2 :(得分:0)

据我了解你,你想要这样的东西:

将输入网址转换为正则表达式。 E.g:

var input = "http://www.google.com/local/add*";
var reg_url = input .replace(/\*/g,".*").replace(/\./g,"\\."); 

您可能需要转义更多字符,请参阅here

并检查它是否匹配:

var url = "http://www.google.com/local/add/analytics?hl=en-US&gl=US";
var isAllowed = url.search(reg_url) >= 0;