SyntaxError: 正则表达式中不允许使用原始括号且带有 Unicode 标志

Unicode 感知 正则表达式模式包含不是 量词字符类 的一部分的原始括号 ({}]) 时,会发生 JavaScript 异常 "raw bracket is not allowed in regular expression with unicode flag"。

消息

SyntaxError: Invalid regular expression: /{/u: Lone quantifier brackets (V8-based)
SyntaxError: raw bracket is not allowed in regular expression with unicode flag (Firefox)
SyntaxError: Invalid regular expression: incomplete {} quantifier for Unicode pattern (Safari)
SyntaxError: Invalid regular expression: unmatched ] or } bracket for Unicode pattern (Safari)

错误类型

哪里出错了?

在非 Unicode 感知模式下,不是量词或字符类一部分的 {}] 被视为字面字符。这可能会隐藏代码中的错误,因此在 Unicode 感知模式下已弃用并被禁止。您应该检查语法是否无效,或者应 转义 字符以按字面意义匹配它们。

如果 { 出现在接受 量词 的上下文中,则将其视为量词的开头。如果其后不是有效的量词,则会抛出另一个语法错误 不完整的量词

示例

无效情况

js
/{{MDN_Macro}}/u;
/\[sic]/u;

有效情况

js
// All { and } need to be escaped
/\{\{MDN_Macro\}\}/u;
// The ] needs to be escaped
/\[sic\]/u;

另请参阅