我有一个正则表达式:
var regex = /[..·・⋯•。~~〜><'"()%/\\]/g;
我正在尝试将模式定义为字符串,然后将其声明为正则表达式,如下所示:
var charToFiltered = `[..·・⋯•。~~〜><'"()%/\\]`;
var regexA = new RegExp(charToFiltered, 'g');
但是出现以下错误:
无效的正则表达式:/[..··⋯•。~~〜><'"((%)/)/:未终止 角色类
答案 0 :(得分:1)
如果将反斜杠移到字符集的开头,它将起作用:
var charToFiltered = `[\\..·・⋯•。~~〜><'"()%/]`;
var regexA = new RegExp(charToFiltered, 'g');
console.log(regexA);
这样做的原因是您的\\
变成了一个反斜杠,然后您的正则表达式中就有\]
的构造,这从字面上意味着]
。因此,您的结束括号成为字符类的一部分,然后您错过了实际的结束]
。解决该问题所需要做的就是将反斜杠移到不逃脱任何东西的地方。