命名反向引用:\k<name>

Baseline 已广泛支持

此特性已经十分成熟,可在许多设备和浏览器版本上使用。自 2020 年 7 月以来,它已在各大浏览器中可用。

命名反向引用指的是先前的命名捕获组的子匹配,并匹配与该组相同的文本。对于未命名捕获组,你需要使用正常的反向引用语法。

语法

正则表达式
\k<name>

参数

name

组的名称。必须是有效的标识符,并且引用存在的命名捕获组。

描述

命名反向引用与普通反向引用非常相似:它引用捕获组匹配的文本并匹配相同的文本。区别在于你通过名称而不是数字来引用捕获组。这使得正则表达式更具可读性,并且更易于重构和维护。

非 Unicode 感知模式下,只有当正则表达式包含至少一个命名捕获组时,序列\k才会开始一个命名反向引用。否则,它是一个恒等转义,与字面字符k相同。这是用于 Web 兼容性的废弃语法,不应依赖它。

js
/\k/.test("k"); // true

示例

配对引号

以下函数匹配字符串中的 title='xxx'title="xxx" 模式。为了确保引号匹配,我们使用反向引用来引用第一个引号。访问第二个捕获组 ([2]) 将返回匹配引号字符之间的字符串

js
function parseTitle(metastring) {
  return metastring.match(/title=(?<quote>["'])(.*?)\k<quote>/)[2];
}

parseTitle('title="foo"'); // 'foo'
parseTitle("title='foo' lang='en'"); // 'foo'
parseTitle('title="Named capturing groups\' advantages"'); // "Named capturing groups' advantages"

规范

规范
ECMAScript® 2026 语言规范
# prod-AtomEscape

浏览器兼容性

另见