我有这个网址...
http://www.google.com/local/add/analytics?hl=en-US&gl=US
我想检查这些 URL,看看它们是否与上面的 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/*
您可以看到输入 URL 也是一个带有 * 的正则表达式,那么我可以使用什么正则表达式将 URL 列表与正则表达式进行匹配,以查看该 url 是否存在?目前我正在做这个...
var isAllowed = (url.indexOf(newURL) === 0);
这绝对没有效率。
最佳答案
这不是我写过的最干净的正则表达式,但我认为它应该有效。
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));
对于所有这些情况都会返回 true
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
然后(/
或什么都没有)然后什么都可以。
它也会返回 true 的一种情况,我将留给您的是 (http|https)www.google.com/local/add(/|)*
关于使用 URL 检查正则表达式的 JavaScript URL 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8308520/