如果部分匹配正则表达式,则获取整个字符串

时间:2019-12-07 05:57:00

标签: javascript regex angular jwt

嗨,如果正则表达式中的一部分匹配,我如何获得整个字符串。 例如,我的网址为https://test-url.com/token-refresh。现在,我正在搜索URL令牌刷新的一部分。但是它仅返回令牌刷新。因此,我可以搜索整个url,但有时url是动态的,需要按部分进行搜索。 这是针对角度jwt blacklistedUrl。

blacklistedRoutes: [
      new RegExp('token-refresh')
]

var str = "https://test-url.com/api/v1/token-refresh";
  var patt = new RegExp("token-refresh");
  var res = patt.exec(str);
  alert(res)

2 个答案:

答案 0 :(得分:1)

您可以编写一个简短的函数来检查URL是否基于blacklistedRoutes中的正则表达式被列入黑名单,然后使用它来控制URL的显示(或其他您想使用的其他操作):

let JWT = {
  blacklistedRoutes: [
    new RegExp('token-refresh')
  ]
};

let isBlacklisted = (str) => JWT.blacklistedRoutes.reduce((c, r) => c || r.test(str), false);

let str = [
  "https://test-url.com/api/v1/token-refresh",
  "https://example.com/should-be-ok"
];

str.map(s =>
  console.log(s + (isBlacklisted(s) ? ' is blacklisted' : ' is ok'))
);

答案 1 :(得分:0)

您可以使用exec来测试正则表达式,而不是使用test来解决此问题 请找到下面的代码片段以获取解决方案:

var str = "https://test-url.com/api/v1/token-refresh";
  var patt = new RegExp("token-refresh");
  var res = patt.test(str);
  res ? alert(str) : alert('not matching urp param');