if语句中的域URL通配符(JavaScript)

时间:2017-09-29 19:50:41

标签: javascript regex

我正在尝试在当前网址以docker结尾时隐藏页面上的特定div(id = contactinfo)。例如:

/folder1/

这是我拥有的,不隐藏div:

http://example.com/folder1/
https://example1.net/FOLDER1/
example2.org/Folder1/
example3.com/folder1/
subdomain.example.com/folder1/
intranet/folder1/

我是JavaScript的新手,并怀疑在文字比较中使用正则表达式可能存在问题。任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:1)

为什么正则表达式??

你想知道当前路径是否以/folder1‌​/结尾,无论大小写 - 所以让我们这样做,获取下层路径的最后9个字符,然后进行简单的字符串比较:

window.location.pathname.toLowerCase().substr(-9) == '/folder1‌​/'

“精简”版本,如果你想保持简短,这就是你所需要的:

document.getElementById('contactinfo').style.display = 
  (window.location.pathname.toLowerCase().substr(-9) == '/folder1‌​/' ? 'none' : 'block');

()可选,但它们增加了一些可读性。)

答案 1 :(得分:0)

您可以使用RegExp /folder1/i,请注意不区分大小写的标记RegExp.prototype.test(),该标记返回Boolean.pathname location

if (/folder1/i.test(location.pathname)) {
  // do stuff
}

答案 2 :(得分:0)

JavaScript中的正则表达式不仅仅是字符串,而是封装在/中,如下所示:

const regex = /\/folder1\/?$/i

请注意RegEx中的$。只有当folder1在最后且?使最后一个斜杠成为可选时,它才会使正则表达式匹配。最后的i表示大写或小写并不重要。

您可以通过运行

将当前网址与该正则表达式进行比较
regex.test(window.location.href)
如果正则表达式匹配,

将返回true。所以你最终会得到:

if (/\/folder1\/?$/i.test(window.location.href)) {
  document.getElementById("contactinfo").style.display="none";
} else {
  document.getElementById("contactinfo").style.display="block";
}