[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Regular_expressions [Back]  [Original]

Regulre Ausdrcke - 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

Regulre Ausdrcke

Ein regulrer Ausdruck (kurz regex) ermglicht es Entwicklern, Zeichenfolgen anhand eines Musters zu berprfen, Teilbereinstimmungen zu extrahieren oder einfach zu testen, ob die Zeichenfolge diesem Muster entspricht. Regulre Ausdrcke werden in vielen Programmiersprachen verwendet, und die JavaScript-Syntax ist von Perl inspiriert.

Es wird Ihnen empfohlen, den Leitfaden zu regulren Ausdrcken zu lesen, um einen berblick ber die verfgbaren Regex-Syntaxen und deren Funktionsweise zu erhalten.

In diesem Artikel

Beschreibung

Regulre Ausdrcke sind ein wichtiges Konzept in der formalen Sprachtheorie. Sie sind eine Mglichkeit, eine mglicherweise unendliche Menge von Zeichenfolgen (ein Language genannt) zu beschreiben. Ein regulrer Ausdruck bentigt im Wesentlichen folgende Merkmale:

  • Eine Menge von Zeichen, die in der Sprache verwendet werden knnen, genannt das Alphabet.
  • Konkatenation: ab bedeutet "das Zeichen a gefolgt vom Zeichen b".
  • Union: a|b bedeutet "entweder a oder b".
  • Kleene-Stern: a* bedeutet "null oder mehr a Zeichen".

Angenommen, ein endliches Alphabet (wie die 26 Buchstaben des englischen Alphabets oder das gesamte Unicode-Zeichen-Set) ist vorhanden, knnen alle regulren Sprachen durch die oben genannten Merkmale erzeugt werden. Natrlich sind viele Muster sehr mhsam auf diese Weise auszudrcken (wie "10 Ziffern" oder "ein Zeichen, das kein Leerzeichen ist"), daher beinhalten JavaScript-Regulre Ausdrcke viele Kurzformen, die unten eingefhrt werden.

Hinweis: JavaScript-Regulre Ausdrcke sind in der Tat nicht regulr, aufgrund der Existenz von Rckverweisen (regulre Ausdrcke mssen endliche Zustnde haben). Sie sind jedoch immer noch eine sehr ntzliche Funktion.

Erstellen von regulren Ausdrcken

Ein regulrer Ausdruck wird typischerweise als Literal erstellt, indem ein Muster in Schrgstriche (/) eingeschlossen wird:

js
const regex1 = /ab+c/g;

Regulre Ausdrcke knnen auch mit dem RegExp()-Konstruktor erstellt werden:

js
const regex2 = new RegExp("ab+c", "g");

Sie haben keine Laufzeitunterschiede, obwohl sie Auswirkungen auf die Leistung, die statische Analysierbarkeit und ergonomische Probleme beim Autorieren mit Escape-Zeichen haben knnen. Weitere Informationen finden Sie im RegExp Referenz.

Regex-Flags

Flags sind spezielle Parameter, die die Art und Weise ndern knnen, wie ein regulrer Ausdruck interpretiert wird oder wie er mit dem Eingabetext interagiert. Jedes Flag entspricht einer Zugriffseigenschaft des RegExp-Objekts.

Flag Beschreibung Entsprechende Eigenschaft
d Erzeugt Indizes fr Teilzeichenfolgenbereinstimmungen. hasIndices
g Globale Suche. global
i Gro-/Kleinschreibung ignorierende Suche. ignoreCase
m Lsst ^ und $ den Anfang und das Ende jeder Zeile anstelle des gesamten Strings treffen. multiline
s Ermglicht es, dass . auch Zeilenumbruchszeichen umfasst. dotAll
u "Unicode"; behandelt ein Muster als Folge von Unicode-Codes. unicode
v Ein Upgrade zum u-Modus mit mehr Unicode-Funktionen. unicodeSets
y Fhrt eine "sticky" Suche durch, die ab der aktuellen Position im Zielstring beginnt. sticky

Die i, m und s Flags knnen fr spezifische Teile eines Regex mit der Modifier Syntax aktiviert oder deaktiviert werden.

Die folgenden Abschnitte listen alle verfgbaren Regex-Syntaxen, gruppiert nach ihrer syntaktischen Natur, auf.

Assertions

Assertions sind Konstrukte, die testen, ob die Zeichenfolge eine bestimmte Bedingung an der angegebenen Position erfllt, jedoch keine Zeichen konsumieren. Assertions knnen nicht quantifiziert werden.

Eingabebegrenzungs-Assertion: ^, $

Stellt fest, dass die aktuelle Position der Anfang oder das Ende der Eingabe ist, oder der Anfang oder das Ende einer Zeile, wenn das m-Flag gesetzt ist.

Lookahead-Assertion: (?=...), (?!...)

Stellt fest, dass die aktuelle Position von einem bestimmten Muster gefolgt oder nicht gefolgt wird.

Lookbehind-Assertion: (?<=...), (?<!...)

Stellt fest, dass die aktuelle Position von einem bestimmten Muster vorangegangen oder nicht vorangegangen wird.

Wortgrenzen-Assertion: \b, \B

Stellt fest, dass die aktuelle Position eine Wortgrenze ist.

Atome

Atome sind die grundlegendsten Einheiten eines regulren Ausdrucks. Jedes Atom konsumiert ein oder mehr Zeichen in der Zeichenfolge und erlaubt es dem Muster entweder, nicht bereinzustimmen oder mit dem nchsten Atom weiter bereinzustimmen.

Rckverweis: \1, \2

Entspricht einem zuvor bereinstimmenden Teilmuster, das mit einer Fanggruppe erfasst wurde.

Fanggruppe: (...)

Entspricht einem Teilmuster und speichert Informationen ber die bereinstimmung.

Zeichenklasse: [...], [^...]

Entspricht einem beliebigen Zeichen in oder nicht in einer Zeichengruppe. Wenn das v Flag aktiviert ist, kann es auch verwendet werden, um Zeichenfolgen endlicher Lnge zu treffen.

Zeichenklassen-Escape: \d, \D, \w, \W, \s, \S

Entspricht einem beliebigen Zeichen in oder nicht in einem vordefinierten Zeichensatz.

Zeichen-Escape: \n, \u{...}

Entspricht einem Zeichen, das mglicherweise nicht bequem in seiner literalen Form dargestellt werden kann.

Literal Character: a, b

Entspricht einem bestimmten Zeichen.

Modifier: (?ims-ims:...)

berschreibt Flageinstellungen in einem bestimmten Teil eines regulren Ausdrucks.

Benannter Rckverweis: \k<name>

Entspricht einem zuvor bereinstimmenden Teilmuster, das mit einer benannten Fanggruppe erfasst wurde.

Benannte Fanggruppe: (?<name>...)

Entspricht einem Teilmuster und speichert Informationen ber die bereinstimmung. Die Gruppe kann spter durch einen benutzerdefinierten Namen statt durch ihren Index im Muster identifiziert werden.

Nicht-fangende Gruppe: (?:...)

Entspricht einem Teilmuster ohne Informationen ber die bereinstimmung zu speichern.

Unicode-Zeichenklassen-Escape: \p{...}, \P{...}

Entspricht einem Zeichensatz, der durch eine Unicode-Eigenschaft angegeben wird. Wenn das v Flag aktiviert ist, kann es auch verwendet werden, um Zeichenfolgen endlicher Lnge zu treffen.

Wildcard: .

Entspricht jedem Zeichen auer Zeilenabschlusszeichen, es sei denn, das s-Flag ist gesetzt.

Andere Funktionen

Diese Funktionen spezifizieren keine Muster selbst, sondern werden verwendet, um Muster zu komponieren.

Disjunction: |

Entspricht einem der durch das Zeichen | getrennten Alternativen.

Quantifizierer: *, +, ?, {n}, {n,}, {n,m}

Entspricht einem Atom eine bestimmte Anzahl von Malen.

Escape-Sequenzen

Escape-Sequenzen in Regexen beziehen sich auf jede Art von Syntax, die durch \ gefolgt von einem oder mehreren Zeichen gebildet wird. Sie knnen sehr unterschiedliche Zwecke dienen, abhngig davon, was auf \ folgt. Unten ist eine Liste aller gltigen "Escape-Sequenzen":

Escape-Sequenz Gefolgt von Bedeutung
\B Keiner Nicht-Wortgrenzen-Assertion
\D Keiner Zeichenklassen-Escape, der nicht-Ziffern-Zeichen darstellt
\P {, eine Unicode-Eigenschaft und/oder Wert, dann } Unicode-Zeichenklassen-Escape, der Zeichen ohne die angegebene Unicode-Eigenschaft darstellt
\S Keiner Zeichenklassen-Escape, der nicht-Weie-Zeichen darstellt
\W Keiner Zeichenklassen-Escape, der nicht-Wort-Zeichen darstellt
\b Keiner Wortgrenzen-Assertion; innerhalb Zeichenklassen, stellt U+0008 (RCKSCHRITT) dar
\c Ein Buchstabe von A bis Z oder a bis z Ein Zeichen-Escape, der das Steuerzeichen mit einem Wert gleich dem Buchstaben-Zeichenwert modulo 32 darstellt
\d Keiner Zeichenklassen-Escape, der Ziffern-Zeichen (0 bis 9) darstellt
\f Keiner Zeichen-Escape, der U+000C (FORMULAR-VORSCHUB) darstellt
\k <, ein Bezeichner, dann > Ein benannter Rckverweis
\n Keiner Zeichen-Escape, der U+000A (ZEILENUMBRUCH) darstellt
\p {, eine Unicode-Eigenschaft und/oder Wert, dann } Unicode-Zeichenklassen-Escape, der Zeichen mit der angegebenen Unicode-Eigenschaft darstellt
\q {, eine Zeichenfolge, dann } Nur gltig innerhalb v-Modus-Zeichenklassen; stellt die Zeichenfolge dar, die wrtlich bereinstimmen soll
\r Keiner Zeichen-Escape, der U+000D (WAGENRCKLAUF) darstellt
\s Keiner Zeichenklassen-Escape, der Leerraum-Zeichen darstellt
\t Keiner Zeichen-Escape, der U+0009 (TABULATOR-ZEICHEN) darstellt
\u 4 hexadezimale Ziffern; oder {, 1 bis 6 hexadezimale Ziffern, dann } Zeichen-Escape, der das Zeichen mit dem angegebenen Codepunkt darstellt
\v Keiner Zeichen-Escape, der U+000B (ZEILEN-TABULATOR) darstellt
\w Keiner Zeichenklassen-Escape, der Wort-Zeichen (A bis Z, a bis z, 0 bis 9, _) darstellt
\x 2 hexadezimale Ziffern Zeichen-Escape, der das Zeichen mit dem angegebenen Wert darstellt
\0 Keiner Zeichen-Escape, der U+0000 (NULL) darstellt

\ gefolgt von 0 und einer anderen Ziffer wird zu einer veralteten oktalen Escape-Sequenz, die im Unicode-bewussten Modus verboten ist. \ gefolgt von einer anderen Ziffernfolge wird zu einem Rckverweis.

Darber hinaus kann \ gefolgt von einigen Nicht-Buchstaben-oder-Ziffer-Zeichen sein, in welchem Fall die Escape-Sequenz immer eine Zeichen-Escape darstellt, die das entkommene Zeichen selbst darstellt:

  • \$, \(, \), \*, \+, \., \/, \?, \[, \\, \], \^, \{, \|, \}: berall gltig
  • \-: nur innerhalb Zeichenklassen gltig
  • \!, \#, \%, \&, \,, \:, \;, \<, \=, \>, \@, \`, \~: nur innerhalb v-Modus-Zeichenklassen gltig

Die anderen ASCII Zeichen, nmlich Leerzeichen, ", ', _, und alle Buchstabenzeichen, die oben nicht erwhnt wurden, sind keine gltigen Escape-Sequenzen. Im Unicode-unbewussten Modus werden Escape-Sequenzen, die nicht zu den oben genannten gehren, zu Identitts-Escape-Sequenzen: sie stellen das Zeichen dar, das dem Backslash folgt. Zum Beispiel reprsentiert \a das Zeichen a. Dieses Verhalten schrnkt die Mglichkeit ein, neue Escape-Sequenzen einzufhren, ohne Rckwrtskompatibilittsprobleme zu verursachen, und ist daher im Unicode-bewussten Modus verboten.

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-patterns-static-semantics-early-errors
ECMAScript 2027 LanguageSpecification
# prod-RegularExpressionModifiers
ECMAScript 2027 LanguageSpecification
# prod-Atom
ECMAScript 2027 LanguageSpecification
# prod-Disjunction
ECMAScript 2027 LanguageSpecification
# prod-Quantifier
ECMAScript 2027 LanguageSpecification
# prod-Assertion
ECMAScript 2027 LanguageSpecification
# prod-CharacterClassEscape
ECMAScript 2027 LanguageSpecification
# prod-CharacterClass
ECMAScript 2027 LanguageSpecification
# prod-PatternCharacter
ECMAScript 2027 LanguageSpecification
# prod-CharacterEscape
ECMAScript 2027 LanguageSpecification
# prod-AtomEscape
ECMAScript 2027 LanguageSpecification
# prod-RegExpUnicodeEscapeSequence
ECMAScript 2027 LanguageSpecification
# prod-DecimalEscape

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page