Benannte Rückreferenz: \k<name>
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Eine benannte Rückreferenz bezieht sich auf die Teilübereinstimmung einer vorherigen benannten Erfassungsgruppe und stimmt mit demselben Text wie diese Gruppe überein. Bei unbenannten Erfassungsgruppen müssen Sie die normale Rückreferenz Syntax verwenden.
Syntax
\k<name>
Parameter
name
-
Der Name der Gruppe. Muss ein gültiger Bezeichner sein und sich auf eine existierende benannte Erfassungsgruppe beziehen.
Beschreibung
Benannte Rückreferenzen sind der normalen Rückreferenz sehr ähnlich: Sie bezieht sich auf den Text, der von einer Erfassungsgruppe erfasst wurde, und stimmt mit demselben Text überein. Der Unterschied besteht darin, dass Sie sich auf die Erfassungsgruppe nach ihrem Namen statt nach ihrer Nummer beziehen. Dies macht den regulären Ausdruck lesbarer und einfacher zu überarbeiten und zu pflegen.
Im Unicode-unbewussten Modus startet die Sequenz \k
nur dann eine benannte Rückreferenz, wenn der RegEx mindestens eine benannte Erfassungsgruppe enthält. Andernfalls ist es ein Identity Escape und entspricht dem literalen Zeichen k
. Dies ist eine veraltete Syntax für Web-Kompatibilität und sollte nicht verwendet werden.
/\k/.test("k"); // true
Beispiele
Paarweise Anführungszeichen
Die folgende Funktion sucht nach den Mustern title='xxx'
und title="xxx"
in einem String. Um sicherzustellen, dass die Anführungszeichen übereinstimmen, verwenden wir eine Rückreferenz, um auf das erste Anführungszeichen zu verweisen. Der Zugriff auf die zweite Erfassungsgruppe ([2]
) gibt den String zwischen den passenden Anführungszeichen zurück:
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"
Spezifikationen
Specification |
---|
ECMAScript Language Specification # prod-AtomEscape |
Browser-Kompatibilität
BCD tables only load in the browser