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