JS正则表达式错误:字符类未终止

时间:2019-11-28 10:26:33

标签: javascript regex

我有一个正则表达式:

var regex = /[..·・⋯•。~~〜><'"()%/\\]/g;

我正在尝试将模式定义为字符串,然后将其声明为正则表达式,如下所示:

var charToFiltered = `[..·・⋯•。~~〜><'"()%/\\]`;
var regexA = new RegExp(charToFiltered, 'g'); 

但是出现以下错误:

  

无效的正则表达式:/[..··⋯•。~~〜><'"((%)/)/:未终止   角色类

1 个答案:

答案 0 :(得分:1)

如果将反斜杠移到字符集的开头,它将起作用:

var charToFiltered = `[\\..·・⋯•。~~〜><'"()%/]`;
var regexA = new RegExp(charToFiltered, 'g'); 
console.log(regexA);

这样做的原因是您的\\变成了一个反斜杠,然后您的正则表达式中就有\]的构造,这从字面上意味着]。因此,您的结束括号成为字符类的一部分,然后您错过了实际的结束]。解决该问题所需要做的就是将反斜杠移到不逃脱任何东西的地方。