Heim >Web-Frontend >js-Tutorial >Wie kann ich in regulären JavaScript-Ausdrücken auf übereinstimmende Gruppen zugreifen?

Wie kann ich in regulären JavaScript-Ausdrücken auf übereinstimmende Gruppen zugreifen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-29 16:42:18901Durchsuche

How Can I Access Matched Groups in JavaScript Regular Expressions?

Zugriff auf übereinstimmende Gruppierungen in regulären JavaScript-Ausdrücken

Bei der Verwendung regulärer Ausdrücke zum Abgleichen von Mustern in Zeichenfolgen ist es oft wünschenswert, auf bestimmte Teile davon zuzugreifen passender Text. JavaScript bietet mehrere Möglichkeiten, dies zu erreichen.

In Ihrem Beispiel haben Sie korrekt einen regulären Ausdruck mit Klammern verwendet, um einen Teil der Zeichenfolge zu erfassen. Das Problem, auf das Sie gestoßen sind, lag jedoch nicht an der Regex selbst, sondern an der Art und Weise, wie Sie auf die übereinstimmenden Gruppen zugegriffen haben.

Zugriff auf Gruppen mit .exec()

Die . Die Methode exec() gibt ein Array zurück, das als erstes Element die gesamte übereinstimmende Zeichenfolge enthält, gefolgt von allen erfassten Gruppen. Um auf die erste erfasste Gruppe zuzugreifen (der „abc“-Teil in Ihrem Beispiel), würden Sie arr[1] verwenden:

let myString = "something format_abc";
let arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);

console.log(arr[1]); // Prints: abc

Using Named Capture Groups

Sie können Ihre Capture-Gruppen auch mit der Syntax regulärer Ausdrücke benennen, z. B. (?). Dadurch können Sie über seinen Namen auf den erfassten Text zugreifen:

let myString = "something format_abc";
let arr = /(?:^|\s)format_(?<text>.*?)(?:\s|$)/.exec(myString);

console.log(arr.groups.text); // Prints: abc

Alternative Syntax mit benannten Erfassungsgruppen:

In ECMAScript 2018 können Sie eine etwas andere verwenden Syntax für benannte Capture-Gruppen, wobei der Gruppenname geschweift eingeschlossen wird Klammern:

let myString = "something format_abc";
let arr = /(?:^|\s)format_({text}.*?)(?:\s|$)/.exec(myString);

console.log(arr.groups.text); // Prints: abc

Übereinstimmung mehrerer Vorkommen mit .matchAll()

Die Methode .matchAll() wurde in ECMAScript 2020 eingeführt und bietet eine Iterator-basierte API für Abgleich mehrerer Vorkommen eines Musters in einer Zeichenfolge. Es gibt einen Iterator zurück, der Übereinstimmungsergebnisse als Array für jede Übereinstimmung liefert, und Sie können auf die erfassten Gruppen innerhalb jedes Ergebnisses zugreifen.

So verwenden Sie .matchAll() in Ihrem Beispiel:

let myString = "something format_abc and something format_xyz";
let matches = myString.matchAll(/(?:^|\s)format_(.*?)(?:\s|$)/g);

for (let match of matches) {
  console.log(match[1]); // Prints: abc, then xyz
}

Das obige ist der detaillierte Inhalt vonWie kann ich in regulären JavaScript-Ausdrücken auf übereinstimmende Gruppen zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn