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

基线 广泛可用

此功能已得到良好建立,并且可在许多设备和浏览器版本上使用。自以下日期起,它已在各浏览器中可用: 2015年7月.

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

语法

正则表达式
\k<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 语言规范
# prod-AtomEscape

浏览器兼容性

BCD 表格仅在浏览器中加载

参见