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;