SyntaxError: invalid named capture reference in regular expression

當正則表示式模式包含一個命名反向引用,而該引用沒有指向其之前的命名捕獲組時,就會發生 JavaScript 異常“正則表示式中無效的命名捕獲引用”。當遇到序列\k但其後沒有<時,會丟擲類似的錯誤訊息“正則表示式中無效的命名引用”。

訊息

SyntaxError: Invalid regular expression: /\k<x>/u: Invalid named capture referenced (V8-based)
SyntaxError: invalid named capture reference in regular expression (Firefox)
SyntaxError: Invalid regular expression: invalid \k<> named backreference (Safari)

SyntaxError: Invalid regular expression: /\k/u: Invalid named reference (V8-based)
SyntaxError: invalid named reference in regular expression (Firefox)
SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern (Safari)

錯誤型別

SyntaxError

哪裡出錯了?

您正在使用轉義序列\k,它被解析為命名反向引用,但\k要麼語法無效,要麼在模式中沒有引用命名捕獲組。

只有當模式包含命名捕獲組或模式是Unicode 感知的時候,\k才開始一個命名反向引用;否則,它是字元k恆等轉義

示例

無效案例

js
/\k<x>/u; // Does not refer to a named capture group
/(?<x>.+)\k<y>/u; // Does not refer to an existing named capture group
/(?<x>.+)\k{x}/u; // Invalid syntax

有效情況

js
/(?<x>.+)\k<x>/u; // Refers to an existing named capture group

另見