| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Guide/Regular_expressions | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
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.
Sie erstellen einen regulren Ausdruck auf zwei Arten:
Verwenden eines regulren Ausdrucksliterals, das aus einem Muster besteht, das zwischen Schrgstrichen eingeschlossen ist, wie folgt:
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:
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.
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.
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".
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 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).
Unterscheiden verschiedene Arten von Zeichen. Zum Beispiel, Unterscheidung zwischen Buchstaben und Ziffern.
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.
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:
| 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
|
|
^, $, \b, \B,
x(?=y), x(?!y), (?<=y)x,
(?<!y)x
|
|
(x), (?<Name>x), (?:x),
\n, \k<Name>
|
|
x*, x+, x?,
x{n}, x{n,},
x{n,m}
|
Hinweis: Ein greres Spickzettel ist ebenfalls verfgbar (nur Zusammenstellung von Teilen dieser Einzelartikel).
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.
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.
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.
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:
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:
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.
| 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:
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:
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.
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:
const re = /pattern/flags;
oder
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.
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:
const re = /\w+\s/g;
mit:
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.
Die Methode RegExp.prototype.exec() mit dem g-Flag gibt jedes Match und seine Position iterativ zurck.
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.
console.log(str.match(re)); // ["fee ", "fi ", "fo "]
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:
/\p{L}*/u;
Unicode-Regulre Ausdrcke haben auch ein anderes Ausfhrungsverhalten. RegExp.prototype.unicode enthlt mehr Erklrungen dazu.
Hinweis: Mehrere Beispiele sind auch verfgbar in:
exec(), test(), match(), matchAll(), search(), replace(), split()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:
^\d{3} ODER | einer ffnenden Klammer \(, gefolgt von drei Ziffern \d{3}, gefolgt von einer schlieenden Klammer \), in einer nicht-erfassenden Gruppe (?:)()\d{3}\1, die gespeichert wurde\d{4}$<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>
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);
});
Ein Online-Tool, um regulre Ausdrcke zu lernen, zu erstellen und zu testen.
Ein Online-Regex-Builder/Debugger
Eine Online-interaktive Tutorials, Spickzettel und Playground.
Ein Online-Visueller-Regex-Tester.
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |