[ 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 mit einem Muster abzugleichen, Informationen ber bereinstimmungen zu extrahieren oder einfach zu testen, ob die Zeichenfolge diesem Muster entspricht. Regulre Ausdrcke werden in vielen Programmiersprachen verwendet, und die Syntax von JavaScript ist von Perl inspiriert.

Es wird 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 (eine Sprache genannt) zu beschreiben. Ein regulrer Ausdruck bentigt im Wesentlichen die folgenden Merkmale:

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

Angenommen, es gibt ein endliches Alphabet (wie die 26 Buchstaben des englischen Alphabets oder das gesamte Unicode-Zeichensatz), knnen alle regulren Sprachen durch die oben genannten Merkmale generiert werden. Natrlich sind viele Muster auf diese Weise sehr mhsam auszudrcken (wie "10 Ziffern" oder "ein Zeichen, das kein Leerzeichen ist"), daher umfassen JavaScript-Regulre Ausdrcke viele Abkrzungen, die im Folgenden eingefhrt werden.

Hinweis: JavaScript-Regulre Ausdrcke sind eigentlich nicht regulr, aufgrund der Existenz von Rckverweisen (regulre Ausdrcke mssen endliche Zustnde haben). Trotzdem sind sie ein sehr ntzliches Merkmal.

Erstellung 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");

Es gibt keine Laufzeitunterschiede, obwohl sie Auswirkungen auf die Leistung, Analysierbarkeit zur Laufzeit und ergonomische Probleme beim Erstellen mit Escape-Zeichen haben knnen. Weitere Informationen finden Sie in der 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 Accessor-Eigenschaft des RegExp-Objekts.

Flag Beschreibung Entsprechende Eigenschaft
d Erzeugt Indizes fr Teilstring-bereinstimmungen. hasIndices
g Globale Suche. global
i Gro-/Kleinschreibung ignorieren. ignoreCase
m Lsst ^ und $ den Anfang und das Ende jeder Zeile statt der ganzen Zeichenfolge abgleichen. multiline
s Erlaubt . das Abgleichen von Zeilenendzeichen. dotAll
u "Unicode"; behandelt ein Muster als eine Folge von Unicode-Codepunkten. unicode
v Eine Aufrstung des u-Modus mit mehr Unicode-Funktionen. unicodeSets
y Durchfhrung einer "Sticky"-Suche, die an der aktuellen Position in der Zielzeichenfolge beginnt. sticky

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

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

Assertions

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

Buffer Boundary Assertion: \A, \z, \Z

Besttigt, dass sich die aktuelle Position in der Zeichenfolge genau am Anfang oder Ende der gesamten Zeichenfolge befindet (\Z erlaubt auch ein nachgestelltes Zeilenumbruch), unabhngig von der Anwesenheit des m-Flags.

Input Boundary Assertion: ^, $

Besttigt, 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: (?=...), (?!...)

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

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

Besttigt, dass die aktuelle Position von einem bestimmten Muster vorangegangen oder nicht vorangegangen ist.

Word Boundary Assertion: \b, \B

Besttigt, dass die aktuelle Position eine Wortgrenze ist.

Atome

Atome sind die grundlegendsten Einheiten eines regulren Ausdrucks. Jedes Atom konsumiert ein oder mehrere Zeichen in der Zeichenfolge und fhrt entweder dazu, dass die bereinstimmung fehlschlgt oder das Muster mit dem nchsten Atom fortgesetzt wird.

Backreference: \1, \2

Stimmt mit einem zuvor bereingestimmten Teilmuster berein, das mit einer erfassenden Gruppe erfasst wurde.

Erfassende Gruppe: (...)

Stimmt mit einem Teilmuster berein und merkt sich Informationen ber die bereinstimmung.

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

Stimmt mit einem Zeichen in einem Satz von Zeichen oder einem Zeichen, das nicht in einem Satz von Zeichen ist. Wenn das v-Flag aktiviert ist, kann es auch verwendet werden, um Zeichenfolgen endlicher Lnge abzugleichen.

Zeichenklassenescape: \d, \D, \w, \W, \s, \S

Stimmt mit einem Zeichen in einem vordefinierten Satz von Zeichen oder einem Charakter, der nicht in diesem Satz von Zeichen ist, berein.

Zeichenescape: \n, \u{...}

Stimmt mit einem Zeichen berein, das mglicherweise nicht in seiner literalen Form bequem dargestellt werden kann.

Literalzeichen: a, b

Stimmt mit einem bestimmten Zeichen berein.

Modifizierer: (?ims-ims:...)

berschreibt die Flag-Einstellungen in einem bestimmten Teil eines regulren Ausdrucks.

Namentlicher Rckverweis: \k<name>

Stimmt mit einem zuvor bereingestimmten Teilmuster berein, das mit einer namentlich erfassten Gruppe erfasst wurde.

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

Stimmt mit einem Teilmuster berein und merkt sich Informationen ber die bereinstimmung. Die Gruppe kann spter durch einen benutzerdefinierten Namen statt durch ihren Index im Muster identifiziert werden.

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

Stimmt mit einem Teilmuster berein, ohne Informationen ber die bereinstimmung zu merken.

Unicode-Zeichenklassenescape: \p{...}, \P{...}

Stimmt mit einem Satz von Zeichen berein, der durch eine Unicode-Eigenschaft angegeben wird. Wenn das v-Flag aktiviert ist, kann es auch verwendet werden, um Zeichenfolgen endlicher Lnge abzugleichen.

Wildcard: .

Stimmt mit jedem Zeichen auer Zeilenendzeichen berein, es sei denn, das s-Flag ist gesetzt.

Andere Merkmale

Diese Merkmale spezifizieren kein Muster selbst, werden jedoch verwendet, um Muster zu komponieren.

Disjunktion: |

Stimmt mit einem der Alternativen berein, die durch das |-Zeichen getrennt sind.

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

Stimmt mit einem Atom eine bestimmte Anzahl von Malen berein.

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 erfllen, je nachdem, was \ folgt. Nachfolgend finden Sie eine Liste aller gltigen "Escape-Sequenzen":

Escape-Sequenz Gefolgt von Bedeutung
\A Keine Buffer Boundary Assertion
\B Keine Nicht-Wort-Grenzen-Assertion
\D Keine Zeichenklassenescape, das nicht-Ziffern-Zeichen reprsentiert
\P {, eine Unicode-Eigenschaft und/oder Wert, dann } Unicode-Zeichenklassenescape, das Zeichen ohne die angegebene Unicode-Eigenschaft reprsentiert
\S Keine Zeichenklassenescape, das nicht-Leerzeichen-Zeichen reprsentiert
\W Keine Zeichenklassenescape, das nicht-Wort-Zeichen reprsentiert
\Z Keine Buffer Boundary Assertion
\b Keine Wort-Grenzen-Assertion; innerhalb Zeichenklassen reprsentiert es U+0008 (RCKSCHRITT)
\c Ein Buchstabe von A bis Z oder a bis z Ein Zeichenescape, das das Steuerzeichen mit einem Wert gleich dem Zeichenwert des Buchstabens modulo 32 reprsentiert
\d Keine Zeichenklassenescape, das Ziffern-Zeichen (0 bis 9) reprsentiert
\f Keine Zeichenescape, das U+000C (SEITENUMBRUCH) reprsentiert
\k <, ein Bezeichner, dann > Ein namentlicher Rckverweis
\n Keine Zeichenescape, das U+000A (ZEILENVORSCHUB) reprsentiert
\p {, eine Unicode-Eigenschaft und/oder Wert, dann } Unicode-Zeichenklassenescape, das Zeichen mit der angegebenen Unicode-Eigenschaft reprsentiert
\q {, eine Zeichenfolge, dann } Nur gltig innerhalb von v-Modus Zeichenklassen; reprsentiert die Zeichenfolge, die wrtlich abgeglichen werden soll
\r Keine Zeichenescape, das U+000D (WAGENRCKLAUF) reprsentiert
\s Keine Zeichenklassenescape, das Leerzeichen-Zeichen reprsentiert
\t Keine Zeichenescape, das U+0009 (ZEICHENTABULATOR) reprsentiert
\u 4 hexadezimale Ziffern; oder {, 1 bis 6 hexadezimale Ziffern, dann } Zeichenescape, das das Zeichen mit dem gegebenen Codepunkt reprsentiert
\v Keine Zeichenescape, das U+000B (ZEILENTABULATOR) reprsentiert
\w Keine Zeichenklassenescape, das Wortzeichen (A bis Z, a bis z, 0 bis 9, _) reprsentiert
\x 2 hexadezimale Ziffern Zeichenescape, das das Zeichen mit dem gegebenen Wert reprsentiert
\z Keine Buffer Boundary Assertion
\0 Keine Zeichenescape, das U+0000 (NUL) reprsentiert

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

Darber hinaus kann \ von einigen Nicht-Buchstaben- oder Zifferzeichen gefolgt werden, wobei die Escape-Sequenz immer ein Zeichenescape ist, das das entkommene Zeichen selbst darstellt:

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

Die anderen ASCII Zeichen, nmlich Leerzeichen, ", ', _, und jeder nicht oben erwhnte Buchstabencharakter, sind keine gltigen Escape-Sequenzen. Im Unicode-unbewussten Modus werden Escape-Sequenzen, die nicht zu den oben genannten gehren, zu Identitts-Escapes: Sie reprsentieren das Zeichen, 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-CharacterClassEscape
ECMAScript 2027 LanguageSpecification
# prod-RegularExpressionModifiers
ECMAScript 2027 LanguageSpecification
# prod-DecimalEscape
ECMAScript 2027 LanguageSpecification
# prod-CharacterEscape
ECMAScript 2027 LanguageSpecification
# prod-Atom
ECMAScript 2027 LanguageSpecification
# prod-Assertion
ECMAScript 2027 LanguageSpecification
# prod-PatternCharacter
ECMAScript 2027 LanguageSpecification
# prod-RegExpUnicodeEscapeSequence
ECMAScript 2027 LanguageSpecification
# prod-Quantifier
ECMAScript 2027 LanguageSpecification
# prod-Disjunction
ECMAScript 2027 LanguageSpecification
# prod-CharacterClass
ECMAScript 2027 LanguageSpecification
# prod-AtomEscape
Regular Expression Buffer Boundaries for ECMAScript
# sec-patterns

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page