SyntaxError: invalid character in class in regular expression

当字符出现在 v 模式字符类 中但不允许字面出现时,就会发生 JavaScript 异常“正则表达式中字符类中的无效字符”。

消息

SyntaxError: Invalid regular expression: /[|]/v: Invalid character in character class (V8-based)
SyntaxError: invalid character in class in regular expression (Firefox)
SyntaxError: Invalid regular expression: invalid class set character (Safari)

错误类型

哪里出错了?

通常,字符类可以包含几乎所有字符的字面值。但是,v 模式使字符类语法更加复杂,为了为将来的语法扩展预留空间,某些语法字符被禁止在字符类中字面出现。它们包括:()[]{}/-|。如果要匹配这些字面字符,请对其进行转义;例如:/[\|]/v

示例

无效情况

js
/[(){}]/v;

有效情况

js
/[\(\)\{\}]/v;

另请参阅