命名反向引用:\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

瀏覽器相容性

另見