语法错误:正则表达式中的无效 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 转义序列 后面必须是 AZaz 的字母,而 \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)

另请参阅