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)

错误类型

SyntaxError

哪里出错了?

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

示例

无效案例

js
/[(){}]/v;

有效情况

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

另见