SyntaxError: raw bracket is not allowed in regular expression with unicode flag
当支持 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)
错误类型
SyntaxError
哪里出错了?
在不支持 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;