语法错误:正则表达式中的无效 Unicode 转义
当 \c
和 \u
字符转义 后面没有有效的字符时,就会出现 JavaScript 异常 "正则表达式中的无效 unicode 转义"。
消息
SyntaxError: Invalid regular expression: /\u{123456}/u: Invalid Unicode escape (V8-based) SyntaxError: invalid unicode escape in regular expression (Firefox) SyntaxError: Invalid regular expression: invalid Unicode code point \u{} escape (Safari)
错误类型
出了什么问题?
在 Unicode 感知模式 模式下,\c
转义序列 后面必须是 A
到 Z
或 a
到 z
的字母,而 \u
转义序列后面必须是 4 个十六进制数字,或者用花括号 ({}
) 括起来的 1 到 6 个十六进制数字。 此外,使用 \u{xxx}
转义序列时,数字必须表示有效的 Unicode 代码点,这意味着其值不能超过 10FFFF
。
示例
无效情况
js
/\u{123456}/u; // Unicode code point is too large
/\u65/u; // Not enough digits
/\c1/u; // Not a letter
有效情况
js
/\u0065/u; // Lowercase "e"
/\u{1F600}/u; // Grinning face emoji
/\cA/u; // U+0001 (Start of Heading)