Heim >Web-Frontend >js-Tutorial >Wie kann ich in regulären JavaScript-Ausdrücken auf übereinstimmende Gruppen zugreifen?
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. (?
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!