Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Reguläre Ausdrücke
  5. Erfassungsgruppe: (...)

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

Erfassungsgruppe: (...)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Juli 2015⁩.

EineErfassungsgruppe gruppiert ein Teilmuster, sodass Sie einenQuantor auf die gesamte Gruppe anwenden oderDisjunktionen innerhalb davon verwenden können. Sie merkt sich Informationen über das Teilmuster-Match, sodass Sie später mit einemBackreference darauf zurückgreifen oder die Informationen über dieMatch-Ergebnisse abrufen können.

Wenn Sie das Ergebnis des Teilmuster-Matches nicht benötigen, verwenden Sie stattdessen einenicht erfassende Gruppe, was die Leistung verbessert und Refactoring-Gefahren vermeidet.

Syntax

regex
(pattern)

Parameter

pattern

Ein Muster, das alles enthalten kann, was Sie in einem Regex-Literal verwenden dürfen, einschließlich einerDisjunktion.

Beschreibung

Eine Erfassungsgruppe funktioniert wie derGruppierungsoperator in JavaScript-Ausdrücken und ermöglicht Ihnen, ein Teilmuster als einzelnesAtom zu verwenden.

Erfassungsgruppen werden in der Reihenfolge ihrer öffnenden Klammern nummeriert. Die erste Erfassungsgruppe wird mit1 nummeriert, die zweite mit2 und so weiter.Benannte Erfassungsgruppen sind ebenfalls Erfassungsgruppen und werden zusammen mit anderen (unnamede) Erfassungsgruppen nummeriert. Die Informationen des Erfassungsgruppen-Matches können abgerufen werden durch:

Hinweis:Selbst im Ergebnis-Array vonexec() werden Erfassungsgruppen durch die Nummern1,2 usw. abgerufen, da das0-Element das gesamte Match ist.\0 ist kein Backreference, sondern eineZeichenflucht für das NUL-Zeichen.

Erfassungsgruppen im Regex-Quellcode entsprechen eins-zu-eins ihren Ergebnissen. Wenn eine Erfassungsgruppe nicht gematcht wird (zum Beispiel, wenn sie zu einer nicht passenden Alternative in einerDisjunktion gehört), ist das entsprechende Ergebnisundefined.

js
/(ab)|(cd)/.exec("cd"); // ['cd', undefined, 'cd']

Erfassungsgruppen könnenquantifiziert werden. In diesem Fall sind die Match-Informationen, die dieser Gruppe entsprechen, das letzte Match der Gruppe.

js
/([ab])+/.exec("abc"); // ['ab', 'b']; because "b" comes after "a", this result overwrites the previous one

Erfassungsgruppen können inLookahead undLookbehind Assertionen verwendet werden. Da Lookbehind-Assertionen ihre Atome rückwärts matchen, ist das endgültige Match, das dieser Gruppe entspricht, dasjenige, das amlinken Ende des Strings erscheint. Die Indizes der Match-Gruppen entsprechen jedoch immer noch ihren relativen Positionen im Regex-Quellcode.

js
/c(?=(ab))/.exec("cab"); // ['c', 'ab']/(?<=(a)(b))c/.exec("abc"); // ['c', 'a', 'b']/(?<=([ab])+)c/.exec("abc"); // ['c', 'a']; because "a" is seen by the lookbehind after the lookbehind has seen "b"

Erfassungsgruppen können verschachtelt sein, wobei die äußere Gruppe zuerst nummeriert wird und dann die innere Gruppe, da sie durch ihre öffnenden Klammern angeordnet sind. Wenn eine verschachtelte Gruppe durch einen Quantor wiederholt wird, werden jedes Mal, wenn die Gruppe matcht, die Ergebnisse der Untergruppen alle überschrieben, manchmal mitundefined.

js
/((a+)?(b+)?(c))*/.exec("aacbbbcac"); // ['aacbbbcac', 'ac', 'a', undefined, 'c']

Im obigen Beispiel wird die äußere Gruppe dreimal gematcht:

  1. Matcht"aac", mit Untergruppen"aa",undefined und"c".
  2. Matcht"bbbc", mit Untergruppenundefined,"bbb" und"c".
  3. Matcht"ac", mit Untergruppen"a",undefined und"c".

Das Ergebnis"bbb" des zweiten Matches bleibt nicht erhalten, da es durch das dritte Match mitundefined überschrieben wird.

Sie können die Start- und Endindizes jeder Erfassungsgruppe im Eingabestring erhalten, indem Sie dasd Flag verwenden. Dies erzeugt eine zusätzlicheindices Eigenschaft auf dem Array, das vonexec() zurückgegeben wird.

Sie können optional einer Erfassungsgruppe einen Namen zuweisen, der hilft, Fallstricke in Bezug auf Gruppenpositionen und Indizierung zu vermeiden. SieheBenannte Erfassungsgruppen für weitere Informationen.

Klammern haben in verschiedenen Regex-Syntaxen andere Zwecke. Zum Beispiel umschließen sie auch Lookahead- und Lookbehind-Assertionen. Da diese Syntaxen alle mit? beginnen und? einQuantor ist, der normalerweise nicht direkt nach( auftreten kann, führt dies nicht zu Mehrdeutigkeiten.

Beispiele

Datum matchen

Das folgende Beispiel matcht ein Datum im FormatYYYY-MM-DD:

js
function parseDate(input) {  const parts = /^(\d{4})-(\d{2})-(\d{2})$/.exec(input);  if (!parts) {    return null;  }  return parts.slice(1).map((p) => parseInt(p, 10));}parseDate("2019-01-01"); // [2019, 1, 1]parseDate("2019-06-19"); // [2019, 6, 19]

Zitate paaren

Die folgende Funktion matcht die Mustertitle='xxx' undtitle="xxx" in einem String. Um sicherzustellen, dass die Anführungszeichen übereinstimmen, verwenden wir ein Backreference, um auf das erste Anführungszeichen zu verweisen. Der Zugriff auf die zweite Erfassungsgruppe ([2]) gibt den String zwischen den übereinstimmenden Anführungszeichen zurück:

js
function parseTitle(metastring) {  return metastring.match(/title=(["'])(.*?)\1/)[2];}parseTitle('title="foo"'); // 'foo'parseTitle("title='foo' lang='en'"); // 'foo'parseTitle('title="Named capturing groups\' advantages"'); // "Named capturing groups' advantages"

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# prod-Atom

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp