Regular Expression Syntax Cheat Sheet - JavaScript | MDN

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

View in English Always switch to English

Regular Expression Syntax Cheat Sheet

Diese Seite bietet eine umfassende Übersicht über alle Möglichkeiten der RegExp-Syntax, indem der Inhalt der Artikel im RegExp-Leitfaden zusammengefasst wird. Wenn Sie mehr Informationen zu einem bestimmten Thema benötigen, folgen Sie bitte dem Link in der entsprechenden Überschrift, um den vollständigen Artikel zu lesen, oder besuchen Sie den Leitfaden.

Zeichenklassen

Zeichenklassen unterscheiden Arten von Zeichen, wie zum Beispiel das Unterscheiden zwischen Buchstaben und Ziffern.

Assertions

Assertions umfassen Grenzen, die den Anfang und das Ende von Zeilen und Wörtern anzeigen, und andere Muster, die auf irgendeine Weise angeben, dass ein Abgleich möglich ist (einschließlich Look-Ahead, Look-Behind und bedingter Ausdrücke).

Grenztyp-Assertions

Zeichen Bedeutung
^

Eingabebegrenzung Start-Assertion: Passt zum Anfang der Eingabe. Wenn das multiline (m) Flag gesetzt ist, passt auch direkt nach einem Zeilenumbruchzeichen. Zum Beispiel, /^A/ passt nicht zum "A" in "an A", aber passt zum ersten "A" in "An A".

Hinweis: Dieses Zeichen hat eine andere Bedeutung, wenn es am Anfang einer Zeichenklasse vorkommt.

$

Eingabebegrenzung Ende-Assertion: Passt zum Ende der Eingabe. Wenn das multiline (m) Flag gesetzt ist, passt es auch direkt vor einem Zeilenumbruchzeichen. Zum Beispiel, /t$/ passt nicht zum "t" in "eater", aber passt im "eat".

\b

Wortgrenzen-Assertion: Passt zu einer Wortgrenze. Dies ist die Position, an der ein Wortzeichen nicht von einem anderen Wortzeichen gefolgt oder vorangegangen wird, wie zwischen einem Buchstaben und einem Leerzeichen. Beachten Sie, dass eine übereinstimmende Wortgrenze nicht im Match enthalten ist. Anders ausgedrückt, die Länge einer übereinstimmenden Wortgrenze ist Null.

Beispiele:

  • /\bm/ passt zum "m" in "moon".
  • /oo\b/ passt nicht zum "oo" in "moon", weil "oo" von "n" gefolgt wird, das ein Wortzeichen ist.
  • /oon\b/ passt zum "oon" in "moon", weil "oon" das Ende der Zeichenfolge ist und daher nicht von einem Wortzeichen gefolgt wird.
  • /\w\b\w/ wird nie etwas passen, weil ein Wortzeichen nicht sowohl von einem Nicht-Wort als auch einem Wortzeichen gefolgt werden kann.

Um ein Rückschrittzeichen ([\b]) zu betrachten, siehe Zeichenklassen.

\B

Nicht-Wortgrenzen-Assertion: Passt zu einer Nicht-Wortgrenze. Dies ist eine Position, an der das vorherige und nächste Zeichen vom gleichen Typ sind: Entweder müssen beide Worte sein, oder beide müssen Nicht-Worte sein, zum Beispiel zwischen zwei Buchstaben oder zwischen zwei Leerzeichen. Der Anfang und das Ende einer Zeichenfolge werden als Nicht-Wörter betrachtet. Genauso wie die übereinstimmende Wortgrenze ist die übereinstimmende Nicht-Wortgrenze auch nicht im Match enthalten. Zum Beispiel, /\Bon/ passt zu "on" in "at noon", und /ye\B/ passt zu "ye" in "possibly yesterday".

Andere Assertions

Hinweis: Das ? Zeichen kann auch als Quantifikator verwendet werden.

Zeichen Bedeutung
x(?=y)

Lookahead-Assertion: Passt zu "x", nur wenn "x" von "y" gefolgt wird. Zum Beispiel passt /Jack(?=Sprat)/ zu "Jack", nur wenn es von "Sprat" gefolgt wird.
/Jack(?=Sprat|Frost)/ passt zu "Jack", nur wenn es von "Sprat" oder "Frost" gefolgt wird. Allerdings sind weder "Sprat" noch "Frost" Teil des Matchergebnisses.

x(?!y)

Negative Lookahead-Assertion: Passt zu "x", nur wenn "x" nicht von "y" gefolgt wird. Zum Beispiel passt /\d+(?!\.)/ zu einer Zahl, nur wenn sie nicht von einem Dezimalpunkt gefolgt wird. /\d+(?!\.)/.exec('3.141') passt zu "141", aber nicht zu "3".

(?<=y)x

Lookbehind-Assertion: Passt zu "x", nur wenn "x" von "y" vorausgeht. Zum Beispiel, /(?<=Jack)Sprat/ passt zu "Sprat", nur wenn es von "Jack" vorausgeht. /(?<=Jack|Tom)Sprat/ passt zu "Sprat", nur wenn es von "Jack" oder "Tom" vorausgeht. Allerdings sind weder "Jack" noch "Tom" Teil des Matchergebnisses.

(?<!y)x

Negative Lookbehind-Assertion: Passt zu "x", nur wenn "x" nicht von "y" vorausgeht. Zum Beispiel, /(?<!-)\d+/ passt zu einer Zahl, nur wenn sie nicht von einem Minuszeichen vorausgeht. /(?<!-)\d+/.exec('3') passt zu "3". /(?<!-)\d+/.exec('-3') wird nicht gefunden, weil die Zahl von einem Minuszeichen vorausgeht.

Gruppen und Rückbezüge

Gruppen und Rückbezüge kennzeichnen Gruppen von Ausdruckszeichen.

Zeichen Bedeutung
(x)

Gruppe erkennbar aufnehmen: Passt zu x und merkt sich den Match. Zum Beispiel passt /(foo)/ und merkt sich "foo" in "foo bar".

Ein regulärer Ausdruck kann mehrere erfassende Gruppen haben. In Ergebnissen, werden Übereinstimmungen mit erfassenden Gruppen typischerweise in einem Array angezeigt, dessen Mitglieder in der gleichen Reihenfolge sind wie die linken Klammern in der erfassenden Gruppe. Dies ist normalerweise einfach die Reihenfolge der erfassenden Gruppen selbst. Dies wird wichtig, wenn erfassende Gruppen verschachtelt sind. Übereinstimmungen werden über den Index der Elemente des Ergebnisses zugegriffen ([1], …, [n]) oder über die vordefinierten Eigenschaften des RegExp-Objekts ($1, …, $9).

Erfassen von Gruppen hat eine Leistungseinbuße. Wenn Sie den erfassten Unterstring nicht erneut abrufen müssen, bevorzugen Sie nicht-erfassende Klammern (siehe unten).

String.prototype.match() wird Gruppen nicht zurückgeben, wenn das /.../g Flag gesetzt ist. Sie können jedoch trotzdem String.prototype.matchAll() verwenden, um alle Übereinstimmungen zu erhalten.

(?<Name>x)

Benannte erfassende Gruppe: Passt zu "x" und speichert es in der "groups"-Eigenschaft der zurückgegebenen Übereinstimmungen unter dem angegebenen Namen durch <Name>. Die spitzen Klammern (< und >) sind für die Gruppennamen erforderlich.

Zum Beispiel, um die US-Vorwahl aus einer Telefonnummer zu extrahieren, könnten wir /\((?<area>\d\d\d)\)/ verwenden. Die resultierende Zahl würde unter matches.groups.area erscheinen.

(?:x)

Nicht-erfassende Gruppe: Passt zu "x", merkt sich aber den Match nicht. Die übereinstimmende Teilzeichenfolge kann nicht aus dem resultierenden Array der Elemente zurückgerufen werden ([1], …, [n]) oder aus den vordefinierten Eigenschaften des RegExp-Objekts ($1, …, $9).

(?flags:x), (?flags-flags:x)

Modifier: Aktiviert oder deaktiviert die angegebenen Flags nur für das eingeschlossene Muster. Nur die i, m, und s Flags können in einem Modifier verwendet werden.

\n

Rückbezug: Wo "n" eine positive Ganzzahl ist. Passt dieselbe Teilzeichenfolge, die von der n-ten erfassenden Gruppe im regulären Ausdruck (zählend von links nach rechts) erfasst wurde. Zum Beispiel, /apple(,)\sorange\1/ passt zu "apple, orange," in "apple, orange, cherry, peach".

\k<Name>

Benannter Rückbezug: Ein Rückbezug auf die letzte übereinstimmende Teilzeichenfolge der Benannten erfassenden Gruppe festgelegt durch <Name>.

Zum Beispiel, /(?<title>\w+), yes \k<title>/ passt zu "Sir, yes Sir" in "Do you copy? Sir, yes Sir!".

Hinweis: \k wird hier wörtlich verwendet, um den Beginn eines Rückbezugs auf eine benannte erfassende Gruppe anzuzeigen.

Quantifizierer

Quantifizierer geben die Anzahl von Zeichen oder Ausdrücken an, die abgeglichen werden sollen.

Hinweis: Im Folgenden bezieht sich Item nicht nur auf einzelne Zeichen, sondern umfasst auch Zeichenklassen und Gruppen und Rückbezüge.