我有这个网址......
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);
这绝对没有效率。
答案 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/ *
它应该寻找(http
或https
或什么都没有)然后(://
或什么都没有)然后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.
可能完全缺席。你希望现在能得到它的工作原理。
答案 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;