我目前有一个正则表达式,如下所示:
const ignoreRegex = new RegExp(/^\/(?!fonts|static).*$/)
但是,我也有一个动态字符串数组,例如"test"
,也需要忽略它们。我需要以某种方式映射此数组并将每个字符串添加到正则表达式中,例如:
const ignoreRegex = new RegExp(/^\/(?!fonts|static + ignoreRoutes.map(x => `|${x}`) + ).*$/)
我该怎么做?
答案 0 :(得分:3)
您可以省略正则表达式周围的/ /
并在RegExp构造函数中使用字符串。
请参见下面的代码。
const ignoreFolders = ["fonts", "static"];
const ignoreRoutes = ["route1", "route2"];
const ignore = ignoreFolders.concat(ignoreRoutes);
const ignoreRegex = new RegExp(`^\/(?!${ignore.join("|")}).*$`);
console.log(ignoreRegex);
如果字符串中有任何正则表达式特殊字符,它们将自动转义。
答案 1 :(得分:0)
const ignoreRoutes = ["fonts","static","aaa","bbb","ccc"];
const ignoreRegex = new RegExp(`^\\/(?!${ignoreRoutes.join("|")}).*$`);