测试字符串是否与正则表达式与包含斜杠的变量组合匹配



我有一个包含字符串的数组,例如

/en/about
/fr/a-propos
/de/uber
/something-else

我想测试给定的字符串(例如"/about"(是否与/en/about 匹配

更具体地说,我想知道它是否与"斜杠 + 正好 2 个小写字母字符 +/about"匹配

我的工作方式是这样的:

const routes = [
'/en/about',
'/fr/a-propos',
'/de/uber',
'/something-else',
];
const regEx = /^(/[a-z]{2}b(/about)b)$/;
Object.keys(routes).forEach((k) => {
if (regEx.test(routes[k])) {
console.log(`redirecting /about to ${routes[k]}`);
}
});

现在..非常简单..我想使用变量而不是硬编码"/about"。我需要将"/about"放在变量中并使用它来测试。我知道我应该使用RegExp来完成此操作,但是我已经尝试了半个小时,无法弄清楚如何将上述正则表达式转换为可与RegExp和变量一起使用的正则表达式

感谢您的帮助!

你可以像这样使用它:

const routes = [
'/en/about',
'/fr/a-propos',
'/de/uber',
'/something-else',
];
const suffix = '/about';
const regEx = new RegExp(`^/[a-z]{2}${suffix}$`);
routes.forEach(k => {
if (regEx.test(k)) {
console.log(`redirecting /about to ${k}`);
}
});

  • 您需要RegExp对象创建
  • 您还可以简化forEach循环迭代
  • 无需在^/之后以及$/之前使用单词边界/因为不是单词字符,并且锚点也是边界匹配器。

最新更新