[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Guide/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

Regulre Ausdrcke sind Muster, die verwendet werden, um Zeichenkombinationen in Zeichenfolgen zu finden. In JavaScript sind regulre Ausdrcke auch Objekte. Diese Muster werden mit den Methoden exec() und test() von RegExp, und mit den Methoden match(), matchAll(), replace(), replaceAll(), search(), und split() von String verwendet. Dieses Kapitel beschreibt JavaScript-Regulre Ausdrcke. Es bietet einen kurzen berblick ber jedes Syntaxelement. Fr eine detaillierte Erklrung der Semantik lesen Sie die Regulre Ausdrcke-Referenz.

In diesem Artikel

Erstellen eines regulren Ausdrucks

Sie erstellen einen regulren Ausdruck auf zwei Arten:

  • Verwenden eines regulren Ausdrucksliterals, das aus einem Muster besteht, das zwischen Schrgstrichen eingeschlossen ist, wie folgt:

    js
    const re = /ab+c/;
    

    Regulre Ausdrucksliterale bieten eine Kompilierung des regulren Ausdrucks, wenn das Skript geladen wird. Wenn der regulre Ausdruck konstant bleibt, kann dies die Leistung verbessern.

  • Oder durch Aufrufen der Konstruktorfunktion des RegExp Objekts, wie folgt:

    js
    const re = new RegExp("ab+c");
    

    Die Verwendung der Konstruktorfunktion bietet eine Laufzeitkompilierung des regulren Ausdrucks. Verwenden Sie die Konstruktorfunktion, wenn Sie wissen, dass sich das Muster des regulren Ausdrucks ndern wird, oder wenn Sie das Muster nicht kennen und es aus einer anderen Quelle, wie z.B. Benutzereingaben, beziehen.

Schreiben eines regulren Ausdrucksmusters

Ein regulres Ausdrucksmuster besteht aus einfachen Zeichen, wie z.B. /abc/, oder einer Kombination aus einfachen und speziellen Zeichen, wie z.B. /ab*c/ oder /Chapter (\d+)\.\d*/. Das letzte Beispiel enthlt Klammern, die als Gedchtnissttze verwendet werden. Das mit diesem Teil des Musters gefundene Match wird fr die sptere Verwendung gespeichert, wie im Verwenden von Gruppen beschrieben.

Verwenden einfacher Muster

Einfache Muster bestehen aus Zeichen, fr die Sie eine direkte bereinstimmung finden mchten. Zum Beispiel stimmt das Muster /abc/ nur dann mit Zeichenkombinationen in Zeichenfolgen berein, wenn die exakte Sequenz "abc" auftritt (alle Zeichen zusammen und in dieser Reihenfolge). Ein solches Match wre in den Zeichenfolgen "Hi, do you know your abc's?" und "The latest airplane designs evolved from slabcraft." erfolgreich. In beiden Fllen liegt das Match mit dem Teilstring "abc" vor. In der Zeichenfolge "Grab crab" gibt es keinen Match, da sie zwar den Teilstring "ab c" enthlt, nicht aber den genauen Teilstring "abc".

Verwenden von Sonderzeichen

Wenn die Suche nach einem Match mehr als eine direkte bereinstimmung erfordert, z.B. das Finden von einem oder mehreren bs oder das Finden von Leerzeichen, knnen Sie Sonderzeichen im Muster verwenden. Zum Beispiel, um ein einzelnes "a" gefolgt von null oder mehr "b"s gefolgt von "c" zu finden, wrden Sie das Muster /ab*c/ verwenden: Das * nach "b" bedeutet "0 oder mehr Vorkommen des vorhergehenden Elements." In der Zeichenfolge "cbbabbbbcdebc" wrde dieses Muster mit dem Teilstring "abbbbc" bereinstimmen.

Die folgenden Seiten bieten Listen der verschiedenen Sonderzeichen, die in jede Kategorie passen, zusammen mit Beschreibungen und Beispielen.

Assertions Leitfaden

Assertions umfassen Grenzen, die die Anfnge und Enden von Zeilen und Wrtern anzeigen, und andere Muster, die auf irgendeine Weise angeben, dass ein Match mglich ist (einschlielich Look-ahead, Look-behind und bedingter Ausdrcke).

Zeichenklassen Leitfaden

Unterscheiden verschiedene Arten von Zeichen. Zum Beispiel, Unterscheidung zwischen Buchstaben und Ziffern.

Gruppen und Rckverweise Leitfaden

Gruppen fassen mehrere Muster als Ganzes zusammen, und erfassende Gruppen bieten zustzliche Submatch-Informationen, wenn ein regulres Ausdrucksmuster zur bereinstimmung mit einer Zeichenkette verwendet wird. Rckverweise beziehen sich auf eine zuvor erfasste Gruppe im gleichen regulren Ausdruck.

Quantoren Leitfaden

Geben die Anzahl von Zeichen oder Ausdrcken an, die bereinstimmen sollen.

Wenn Sie alle Sonderzeichen, die in regulren Ausdrcken verwendet werden knnen, in einer einzigen Tabelle ansehen mchten, klicken Sie auf folgendes:

Sonderzeichen in regulren Ausdrcken.
Zeichen / Konstrukte Entsprechender Artikel
[xyz], [^xyz], ., \d, \D, \w, \W, \s, \S, \t, \r, \n, \v, \f, [\b], \0, \cX, \xHH, \uHHHH, \u{HH}, x|y

Zeichenklassen

^, $, \b, \B, x(?=y), x(?!y), (?<=y)x, (?<!y)x

Assertions

(x), (?<Name>x), (?:x), \n, \k<Name>

Gruppen und Rckverweise

x*, x+, x?, x{n}, x{n,}, x{n,m}

Quantoren

Hinweis: Ein greres Spickzettel ist ebenfalls verfgbar (nur Zusammenstellung von Teilen dieser Einzelartikel).

Escaping

Wenn Sie eines der Sonderzeichen wrtlich benutzen mssen (tatschlich nach einem "*" suchen, zum Beispiel), sollten Sie es durch einen Backslash davor schtzen. Zum Beispiel, um nach "a" gefolgt von "*" gefolgt von "b" zu suchen, wrden Sie /a\*b/ verwenden der Backslash "escaped" das "*", macht es wrtlich statt speziell.

Hinweis: In vielen Fllen, wenn Sie versuchen ein Sonderzeichen zu matchen, knnen Sie es in einer Zeichenklasse einschlieen als Alternative zum Escapen, zum Beispiel /a[*]b/.

hnlich, wenn Sie einen regulren Ausdrucksliteral schreiben und einen Schrgstrich ("/") matchen mssen, mssen Sie diesen escapen (sonst beendet er das Muster). Zum Beispiel, um nach der Zeichenfolge "/example/" gefolgt von einem oder mehreren alphabetischen Zeichen zu suchen, verwenden Sie /\/example\/[a-z]+/i die Backslashes vor jedem Schrgstrich machen sie wrtlich.

Um einen wrtlichen Rckschrgstrich zu matchen, mssen Sie den Rckschrgstrich escapen. Zum Beispiel, um die Zeichenfolge "C:\" zu matchen, wobei "C" ein beliebiger Buchstabe sein kann, verwenden Sie /[A-Z]:\\/ der erste Backslash escapt den nachfolgenden, so dass der Ausdruck nach einem einzigen wrtlichen Backslash sucht.

Wenn Sie den RegExp-Konstruktor mit einem Stringliteral verwenden, denken Sie daran, dass der Backslash ein Escapezeichen in Stringliteralen ist, also mssen Sie ihn auf der Stringliteralebene escapen, um ihn im regulren Ausdruck zu verwenden. /a\*b/ und new RegExp("a\\*b") erstellen denselben Ausdruck, der nach "a" gefolgt von einem wrtlichen "*" gefolgt von "b" sucht.

Die Funktion RegExp.escape() gibt einen neuen String zurck, in dem alle Sonderzeichen in der Regex-Syntax escapt sind. Dies ermglicht Ihnen, new RegExp(RegExp.escape("a*b")) zu verwenden, um einen regulren Ausdruck zu erstellen, der nur die Zeichenfolge "a*b" matched.

Verwenden von Klammern

Klammern um einen beliebigen Teil des regulren Ausdrucksmusters fhren dazu, dass dieser Teil des bereinstimmenden Teilstrings gespeichert wird. Einmal gespeichert, kann der Teilstring fr andere Zwecke abgerufen werden. Siehe Gruppen und Rckverweise fr mehr Details.

Verwendung regulrer Ausdrcke in JavaScript

Regulre Ausdrcke werden mit den RegExp-Methoden test() und exec() sowie mit den String-Methoden match(), matchAll(), replace(), replaceAll(), search(), und split() verwendet.

Methode Beschreibung
exec() Fhrt eine Suche nach einem Match in einer Zeichenkette aus. Sie gibt ein Array mit Informationen oder null bei Fehlanpassung zurck.
test() Prft auf einen Match in einer Zeichenkette. Sie gibt true oder false zurck.
match() Gibt ein Array zurck, das alle Matches, einschlielich erfassender Gruppen, enthlt, oder null, wenn kein Match gefunden wird.
matchAll() Gibt einen Iterator zurck, der alle Matches einschlielich erfassender Gruppen enthlt.
search() Prft auf einen Match in einer Zeichenkette. Sie gibt den Index des Matches zurck, oder -1, wenn die Suche fehlschlgt.
replace() Fhrt eine Suche nach einem Match in einer Zeichenkette aus und ersetzt den bereinstimmenden Teilstring durch einen Ersetzungsteilstring.
replaceAll() Fhrt eine Suche nach allen Matches in einer Zeichenkette aus und ersetzt die bereinstimmenden Teilstrings durch einen Ersetzungsteilstring.
split() Verwendet einen regulren Ausdruck oder einen festen String, um eine Zeichenkette in ein Array von Teilstrings zu zerlegen.

Wenn Sie wissen mchten, ob ein Muster in einer Zeichenkette gefunden wird, verwenden Sie die Methoden test() oder search(); fr mehr Informationen (aber langsamere Ausfhrung) verwenden Sie die Methoden exec() oder match(). Wenn Sie exec() oder match() verwenden und der Match erfolgreich ist, geben diese Methoden ein Array zurck und aktualisieren die Eigenschaften des zugehrigen regulren Ausdrucksobjekts und auch des vordefinierten regulren Ausdrucksobjekts RegExp. Wenn der Match fehlschlgt, gibt die Methode exec() null zurck (was zu false fhrt).

Im folgenden Beispiel verwendet das Skript die Methode exec(), um einen Match in einer Zeichenkette zu finden.

js
const myRe = /d(b+)d/g;
const myArray = myRe.exec("cdbbdbsbz");

Wenn Sie nicht auf die Eigenschaften des regulren Ausdrucks zugreifen mssen, ist eine alternative Mglichkeit, myArray zu erstellen, mit diesem Skript:

js
const myArray = /d(b+)d/g.exec("cdbbdbsbz");
// similar to 'cdbbdbsbz'.match(/d(b+)d/g); however,
// 'cdbbdbsbz'.match(/d(b+)d/g) outputs [ "dbbd" ]
// while /d(b+)d/g.exec('cdbbdbsbz') outputs [ 'dbbd', 'bb', index: 1, input: 'cdbbdbsbz' ]

(Siehe Verwenden des globalen Suchflags mit exec() fr weitere Informationen ber die unterschiedlichen Verhaltensweisen.)

Wenn Sie den regulren Ausdruck aus einem String konstruieren mchten, ist eine weitere Alternative dieses Skript:

js
const myRe = new RegExp("d(b+)d", "g");
const myArray = myRe.exec("cdbbdbsbz");

Mit diesen Skripten ist der Match erfolgreich und gibt das Array zurck und aktualisiert die in der folgenden Tabelle gezeigten Eigenschaften.

Ergebnisse der Ausfhrung eines regulren Ausdrucks.
Objekt Eigenschaft oder Index Beschreibung In diesem Beispiel
myArray Der bereinstimmende String und alle gespeicherten Teilstrings. ['dbbd', 'bb', index: 1, input: 'cdbbdbsbz']
index Der 0-basierte Index des Matches in der Eingabezeichenfolge. 1
input Die ursprngliche Zeichenkette. 'cdbbdbsbz'
[0] Die zuletzt bereinstimmenden Zeichen. 'dbbd'
myRe lastIndex Der Index, an dem der nchste Match beginnen soll. (Diese Eigenschaft wird nur gesetzt, wenn der regulre Ausdruck die g-Option verwendet, die in Erweitertes Suchen mit Flags beschrieben wird.) 5
source Der Text des Musters. Wird zum Zeitpunkt der Erstellung des regulren Ausdrucks aktualisiert, nicht bei der Ausfhrung. 'd(b+)d'

Wie in der zweiten Form dieses Beispiels gezeigt, knnen Sie einen regulren Ausdruck, der mit einem Objektinitialisierer erstellt wurde, ohne ihn einer Variablen zuzuweisen, verwenden. Wenn Sie dies jedoch tun, ist jedes Vorkommen ein neuer regulrer Ausdruck. Aus diesem Grund knnen Sie, wenn Sie diese Form ohne Zuordnung zu einer Variablen verwenden, die Eigenschaften dieses regulren Ausdrucks spter nicht mehr zugreifen. Zum Beispiel, nehmen wir an, Sie haben dieses Skript:

js
const myRe = /d(b+)d/g;
const myArray = myRe.exec("cdbbdbsbz");
console.log(`The value of lastIndex is ${myRe.lastIndex}`);

// "The value of lastIndex is 5"

Haben Sie jedoch dieses Skript:

js
const myArray = /d(b+)d/g.exec("cdbbdbsbz");
console.log(`The value of lastIndex is ${/d(b+)d/g.lastIndex}`);

// "The value of lastIndex is 0"

Die Vorkommen von /d(b+)d/g in den beiden Anweisungen sind unterschiedliche regulre Ausdrucksobjekte und haben daher unterschiedliche Werte fr ihre lastIndex-Eigenschaft. Wenn Sie die Eigenschaften eines regulren Ausdrucks zugreifen mssen, der mit einem Objektinitialisierer erstellt wurde, sollten Sie ihn zuerst einer Variablen zuweisen.

Erweitertes Suchen mit Flags

Regulre Ausdrcke haben optionale Flags, die Funktionen wie globale Suchvorgnge und die Suche ohne Bercksichtigung der Gro-/Kleinschreibung ermglichen. Diese Flags knnen einzeln oder zusammen in beliebiger Reihenfolge verwendet werden und sind Teil des regulren Ausdrucks.

Flag Beschreibung Entsprechende Eigenschaft
d Erzeugt Indizes fr Teilstring-Matches. hasIndices
g Globale Suche. global
i Suche ohne Bercksichtigung der Gro-/Kleinschreibung. ignoreCase
m Lsst ^ und $ den Anfang und das Ende jeder Zeile matchen statt die des gesamten Strings. multiline
s Erlaubt . das Matchen von Zeilenumbrchen. dotAll
u "Unicode"; behandelt ein Muster als eine Folge von Unicode-Codepunkten. unicode
v Eine Erweiterung des u-Modus mit mehr Unicode-Funktionen. unicodeSets
y Fhrt eine "sticky" Suche durch, die am aktuellen Standpunkt in der Zielzeichenfolge beginnt. sticky

Um ein Flag mit dem regulren Ausdruck einzuschlieen, verwenden Sie diese Syntax:

js
const re = /pattern/flags;

oder

js
const re = new RegExp("pattern", "flags");

Beachten Sie, dass die Flags ein integraler Bestandteil eines regulren Ausdrucks sind. Sie knnen spter nicht hinzugefgt oder entfernt werden.

Zum Beispiel erstellt re = /\w+\s/g einen regulren Ausdruck, der nach einem oder mehreren Zeichen gefolgt von einem Leerzeichen sucht, und sucht diese Kombination im gesamten String.

js
const re = /\w+\s/g;
const str = "fee fi fo fum";
const myArray = str.match(re);
console.log(myArray);

// ["fee ", "fi ", "fo "]

Sie knnten die Zeile ersetzen:

js
const re = /\w+\s/g;

mit:

js
const re = new RegExp("\\w+\\s", "g");

und das gleiche Ergebnis erhalten.

Das m-Flag wird verwendet, um anzugeben, dass eine mehrzeilige Eingabezeichenfolge als mehrere Zeilen behandelt werden soll. Wenn das m-Flag verwendet wird, matchen ^ und $ am Anfang oder Ende jeder Zeile innerhalb der Eingabezeichenfolge statt am Anfang oder Ende des gesamten Strings.

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

Verwenden des globalen Suchflags mit exec()

Die Methode RegExp.prototype.exec() mit dem g-Flag gibt jedes Match und seine Position iterativ zurck.

js
const str = "fee fi fo fum";
const re = /\w+\s/g;

console.log(re.exec(str)); // ["fee ", index: 0, input: "fee fi fo fum"]
console.log(re.exec(str)); // ["fi ", index: 4, input: "fee fi fo fum"]
console.log(re.exec(str)); // ["fo ", index: 7, input: "fee fi fo fum"]
console.log(re.exec(str)); // null

Im Gegensatz dazu gibt die Methode String.prototype.match() alle Matches auf einmal zurck, jedoch ohne ihre Position.

js
console.log(str.match(re)); // ["fee ", "fi ", "fo "]

Verwenden von Unicode-Regulren Ausdrcken

Das u-Flag wird verwendet, um "unicode" regulre Ausdrcke zu erstellen; das heit, regulre Ausdrcke, die das Matchen gegen Unicode-Text untersttzen. Ein wichtiges Merkmal, das im unicode-Modus aktiviert ist, sind Unicode Property Escapes. Zum Beispiel knnte der folgende regulre Ausdruck verwendet werden, um gegen ein beliebiges Unicode-"Wort" zu matchen:

js
/\p{L}*/u;

Unicode-Regulre Ausdrcke haben auch ein anderes Ausfhrungsverhalten. RegExp.prototype.unicode enthlt mehr Erklrungen dazu.

Beispiele

Hinweis: Mehrere Beispiele sind auch verfgbar in:

Verwenden von Sonderzeichen zur Eingabenberprfung

Im folgenden Beispiel wird vom Benutzer erwartet, dass er eine Telefonnummer eingibt. Wenn der Benutzer die Taste "berprfen" drckt, berprft das Skript die Gltigkeit der Nummer. Wenn die Nummer gltig ist (die Zeichenfolge, die durch den regulren Ausdruck festgelegt ist, bereinstimmt), zeigt das Skript eine Nachricht an, die dem Benutzer dankt und die Nummer besttigt. Wenn die Nummer ungltig ist, informiert das Skript den Benutzer, dass die Telefonnummer ungltig ist.

Der regulre Ausdruck sucht nach:

  1. dem Anfang der Datenzeile: ^
  2. gefolgt von drei numerischen Zeichen \d{3} ODER | einer ffnenden Klammer \(, gefolgt von drei Ziffern \d{3}, gefolgt von einer schlieenden Klammer \), in einer nicht-erfassenden Gruppe (?:)
  3. gefolgt von einem Bindestrich, Schrgstrich oder Dezimalpunkt in einer erfassenden Gruppe ()
  4. gefolgt von drei Ziffern \d{3}
  5. gefolgt von der gematchten Gruppe \1, die gespeichert wurde
  6. gefolgt von vier Ziffern \d{4}
  7. gefolgt vom Ende der Datenzeile: $

HTML

html
<p>
  Enter your phone number (with area code) and then click "Check".
  <br />
  The expected format is like ###-###-####.
</p>
<form id="form">
  <input id="phone" />
  <button type="submit">Check</button>
</form>
<p id="output"></p>

JavaScript

js
const form = document.querySelector("#form");
const input = document.querySelector("#phone");
const output = document.querySelector("#output");

const re = /^(?:\d{3}|\(\d{3}\))([-/.])\d{3}\1\d{4}$/;

function testInfo(phoneInput) {
  const ok = re.exec(phoneInput.value);

  output.textContent = ok
    ? `Thanks, your phone number is ${ok[0]}`
    : `${phoneInput.value} isn't a phone number with area code!`;
}

form.addEventListener("submit", (event) => {
  event.preventDefault();
  testInfo(input);
});

Ergebnis

Werkzeuge

RegExr

Ein Online-Tool, um regulre Ausdrcke zu lernen, zu erstellen und zu testen.

Regex tester

Ein Online-Regex-Builder/Debugger

Regex interactive tutorial

Eine Online-interaktive Tutorials, Spickzettel und Playground.

Regex visualizer

Ein Online-Visueller-Regex-Tester.


Web Proxy Viewer  |  New URL  |  Original Page