语法错误: 正则表达式中无效的命名捕获引用
当正则表达式模式包含一个 命名反向引用,它不引用在它之前的 命名捕获组 时,会发生 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)
错误类型
哪里出错了?
您正在使用转义序列 \k
,它被解析为 命名反向引用,但 \k
要么在语法上无效,要么不引用模式中的命名捕获组。
\k
只有在模式包含 命名捕获组 或模式是 Unicode 感知 时才开始命名反向引用;否则,它是一个 身份转义 用于字符 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