我有以下网址,并且所有这些网址都被视为网站的根目录,如何使用正则表达式使用javascript location.pathname来确定下面的模式,因为您会注意到“网站”这个单词在此模式中重复。
http://www.somehost.tv/sitedev/
http://www.somehost.tv/sitetest/
http://www.somehost.tv/site/
http://www.somehost.tv/sitedev/index.html
http://www.somehost.tv/sitetest/index.html
http://www.somehost.tv/site/index.html
我正在尝试仅显示jQuery对话框,并且仅当用户位于网站的根目录时才会显示。
答案 0 :(得分:2)
只需使用DOM来解析它。无需调用正则表达式解析器。
var url = 'http://www.somesite.tv/foobar/host/site';
urlLocation = document.createElement('a');
urlLocation.href = url;
alert(urlLocation.hostname); // alerts 'www.somesite.tv'
答案 1 :(得分:0)
完整的模式,包括协议和域,可以是这样的:
/^http:\/\/www\.somehost\.tv\/site(test|dev)?\/(index\.html)?$/
但是,如果您与location.pathname
匹配,请尝试
/^\/site(test|dev)?\/(index\.html)?$/.test(location.pathname)
答案 2 :(得分:0)
如果您没有明确需要正则表达式
你也可以做例如
var urls = ["http://www.somehost.tv/sitedev/",
"http://www.somehost.tv/sitetest/",
"http://www.somehost.tv/site/",
"http://www.somehost.tv/sitedev/index.html",
"http://www.somehost.tv/sitetest/index.html",
"http://www.somehost.tv/site/index.html"]
function getRepeatedSub(arr) {
var srt = arr.concat().sort();
var a = srt[0];
var b = srt.pop();
var s = a.length;
while (!~b.indexOf(a.substr(0, s))) {
s--
};
return a.substr(0, s);
}
console.log(getRepeatedSub(urls)); //http://www.somehost.tv/site
为例