SyntaxError: invalid identity escape in regular expression

支持 Unicode 的正则表达式模式包含不表示已识别转义序列的转义序列时,会发生 JavaScript 异常“正则表达式中无效的身份转义”。

消息

SyntaxError: Invalid regular expression: /\q/u: Invalid escape (V8-based)
SyntaxError: invalid identity escape in regular expression (Firefox)
SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern (Safari)

错误类型

SyntaxError

哪里出错了?

在不支持 Unicode 的模式下,\ 可以用来转义任何字符,包括那些没有明确含义的字符。在这些情况下,被转义的字符表示它自身。例如,\q 会匹配字符 q。这严重限制了未来添加新转义序列的能力,因此在支持 Unicode 的模式下,只允许已识别的转义序列。不要冗余地添加 \

\x 字符转义后面没有跟着两个十六进制数字时,也会抛出此错误。

有关可用转义序列的详尽列表,请参阅正则表达式参考。有关在每种上下文中哪些字符可以字面量转义或非转义出现的表格,请参阅字面量字符

示例

无效案例

js
/[\f\v\n\t\ ]/u;

有效情况

js
// There's no need to escape the space
/[\f\v\n\t ]/u;

另见