所以我想要这个:
/services/auth/token
要与此匹配:
http://localhost:3000/services/auth/token/
尾随/可选
但不是这样:
http://localhost:3000/services/auth/token/refresh
我通常在这方面比较擅长,但我有点困。如此帮助!!
编辑:
非常感谢,但是我应该说想使用变量来做到这一点,这让我感到困惑。抱歉,我无法添加JS标签。
const myPath = '/services/auth/token';
const pathToCheck = 'http://localhost:3000/services/auth/token/';
pathToCheck.match(myPath); // doesn't work, also matches against refresh
答案 0 :(得分:1)
您可以避免使用正则表达式,而将endsWith
与2个字符串一起使用(一个不带尾随/
,另一个带):
const myPath = '/services/auth/token';
const pathToCheck = 'http://localhost:3000/services/auth/token/';
var matched = false;
// without trailinbg slash
matched = pathToCheck.endsWith(myPath);
console.log(matched);
// with trailinbg slash
matched = pathToCheck.endsWith(myPath + '/');
console.log(matched);
IE不支持某些String方法,例如String.endsWith
。要使此方法在IE
中起作用,请使用:
if (!String.prototype.endsWith) {
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}
答案 1 :(得分:0)
一个简单的否定前瞻应该在这里起作用:
\/services\/auth\/token\/(?!refresh\b).*
上面的模式说要匹配/services/auth/token/
,只要后面的内容不是refresh
。
相反,如果您有一条可能遵循的接受路径的白名单,那么我们可以使用这些路径代替否定的前瞻。
答案 2 :(得分:0)
您可以尝试以下操作:
regex = /services\/auth\/token\/?$/
这确保您的字符串必须在token
之后的可选斜杠处结束。