我目前正在使用以下行来匹配此网址 - www.sitename.com/join
if(/join/.test(self.location.href)) {joinPopUp();}
抓住它也会匹配/ blahjoinblah。
如何更改此内容,以便只匹配确切的字词' join'。
注意:我认为必须匹配' / join'作为' /'仍然存在(我认为)。
三江源
答案 0 :(得分:1)
正则表达式\/join(?=\/)
可能正是您要找的。它会检查/join
值,然后使用positive look-a-head查看字符/
是否跟随。
在控制台内进行快速测试:
["/xxjoin", "/join/", "/joinme", "joinme"].
forEach(function (value) {
console.log(value.match(/\/join(?=\/)/));
});
// returns the following:
null
["/join", index: 0, input: "/join/"]
null
null
或为了便于阅读,
["/xxjoin", "/join/", "/joinme", "joinme"].
filter(function(v) {
return v.match(/\/join(?=\/)/) != null;
});
// returns ['/join/']
答案 1 :(得分:1)
要了解有关正则表达式的更多信息,请阅读其中一些great resources。
但是要更具体地回答你的问题,如果你真的希望它只匹配/join
没有查询字符串变量或其他输入,那么像这样的东西可以检查/
和那个它以/join
结尾。虽然我认为它仍然匹配/foo/join
function testUrl(url) {
if(/\/join\/?$/.test(url)) {
console.log(url, "matched /join");
}
}
testUrl(self.location.href);
testUrl("https://test.com/join");
testUrl("https://test.com/foo/join");
testUrl("http://test.com/blahjoinblah");
所以你可能想要改变你所匹配的内容 - 可能会看self.location.pathname