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;

另見