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



我有一个正则表达式:

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

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

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

但是我收到以下错误:

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

如果将反斜杠移动到字符集的开头,它就可以工作:

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

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

最新更新