我正在尝试在当前网址以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的新手,并怀疑在文字比较中使用正则表达式可能存在问题。任何建议都将不胜感激。
答案 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";
}