jquery匹配URL self.location.href中的确切字符串

jquery matching exact string from URL self.location.href

我正在使用以下行匹配此URL-www.sitename.com/join

1
if(/join/.test(self.location.href)) {joinPopUp();}

关键是它也将匹配/blahjoinblah。

我怎样才能更改这个,使它只匹配"join"这个词。

注意:我认为它必须匹配"/join",因为"/"仍然存在(我认为)。

谢谢你


要了解更多关于正则表达式的信息,请阅读这些重要的参考资料。

但更具体地说,如果您真的希望它只匹配没有查询字符串变量或其他输入的/join,那么这样的工作将检查/,并以/join结束。不过,我想这还是和/foo/join相匹配的。

1
2
3
4
5
6
7
8
9
10
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


正则表达式\/join(?=\/)可能是您要查找的。它将检查/join值,然后使用正的look-a-head来查看字符/是否如下。

控制台内的快速测试:

1
2
3
4
5
6
7
8
9
10
11
["/xxjoin","/join/","/joinme","joinme"].
          forEach(function (value) {
                     console.log(value.match(/\/join(?=\/)/));
                  });

// returns the following:

null
["/join", index: 0, input:"/join/"]
null
null

或者为了可读性,

1
2
3
4
5
6
["/xxjoin","/join/","/joinme","joinme"].
          filter(function(v) {
                    return v.match(/\/join(?=\/)/) != null;
                 });

// returns ['/join/']