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;