Regex-Spickzettel

Der Regex-Spickzettel zeigt die wichtigste Syntax regulärer Ausdrücke mit Beispielen: Zeichenklassen, Quantifizierer, Gruppen, Lookahead, Flags und Ersetzen, jeweils zum Kopieren und Testen.

Testfeld„Testen“ an einem Eintrag lädt das Beispiel

Zeichen und Zeichenklassen

.
Ein beliebiges Zeichen außer Zeilenumbruch. Mit Flag s auch Zeilenumbrüche.
\d
Eine Ziffer 0 bis 9 (in JavaScript nur ASCII-Ziffern).
\D
Ein Zeichen, das keine Ziffer ist.
\w
Ein Wortzeichen: [A-Za-z0-9_]. Achtung: Umlaute und ß gehören in JavaScript nicht dazu.
\W
Ein Zeichen, das kein Wortzeichen ist, etwa Leerzeichen, Satzzeichen oder ä.
\s
Leerraum: Leerzeichen, Tabulator, Zeilenumbruch, geschütztes Leerzeichen und weitere Unicode-Leerzeichen.
\S
Ein Zeichen, das kein Leerraum ist.
[abc]
Zeichenklasse: genau eines der Zeichen a, b oder c.
[^abc]
Negierte Klasse: ein Zeichen, das nicht a, b oder c ist.
[a-z]
Bereich: ein Kleinbuchstabe von a bis z (ohne Umlaute).
[a-zA-ZäöüÄÖÜß]
Deutsche Buchstaben einschließlich Umlauten und ß.
\p{L}
Ein Unicode-Buchstabe aus beliebiger Schrift. In JavaScript nur mit Flag u oder v.
\p{Lu}
Ein Großbuchstabe (Unicode-Kategorie Lu), Flag u nötig.
\P{L}
Gegenteil von \p{L}: alles außer Buchstaben.
\t \n \r
Tabulator, Zeilenumbruch (LF) und Wagenrücklauf (CR). Windows-Zeilenende ist \r\n.
\x41 \u00e4 \u{1D11E}
Zeichen per Code: zwei Hexziffern, vier Hexziffern oder (mit Flag u) Codepoint in geschweiften Klammern.

Anker und Grenzen

^
Anfang des Textes; mit Flag m Anfang jeder Zeile.
$
Ende des Textes; mit Flag m Ende jeder Zeile.
\b
Wortgrenze zwischen Wortzeichen und Nicht-Wortzeichen. Achtung: in JavaScript gilt ä als Nicht-Wortzeichen.
\B
Keine Wortgrenze, also mitten im Wort.
\A \z \Z
Absoluter Anfang und Ende des Textes in PCRE, Python (dort \Z statt \z), Java und .NET. In JavaScript nicht vorhanden; dort ^ und $ ohne Flag m verwenden.

Quantifizierer

*
Null oder beliebig oft (gierig).
+
Einmal oder öfter (gierig).
?
Null oder einmal, macht das Vorherige optional.
{3}
Genau drei Mal.
{2,}
Mindestens zwei Mal.
{2,4}
Zwei bis vier Mal.
*? +? ?? {2,4}?
Genügsame (lazy) Varianten: so wenig wie möglich. Nützlich zwischen Trennzeichen.
*+ ++ ?+
Possessive Quantifizierer: kein Zurückgehen (Backtracking). PCRE und Java, in JavaScript und Python vor 3.11 nicht vorhanden.

Gruppen und Rückverweise

(abc)
Gruppe, die den Treffer erfasst (Capture Group). Zugriff über $1 oder \1.
(?:abc)
Gruppe ohne Erfassung, nur zum Zusammenfassen, etwa für Quantifizierer.
(?<name>abc)
Benannte Gruppe. In Python lautet die Schreibweise (?P<name>abc).
a|b
Alternative: links oder rechts. Bindet am schwächsten, daher oft in Gruppe: (Hund|Katze).
\1
Rückverweis auf den Text der ersten Gruppe.
\k<name>
Rückverweis auf eine benannte Gruppe (Python: (?P=name)).
(?>abc)
Atomare Gruppe: einmal gefunden, kein Backtracking hinein. PCRE, Java, .NET, Python ab 3.11; nicht in JavaScript.

Lookahead und Lookbehind

(?=abc)
Positiver Lookahead: Danach muss abc folgen, wird aber nicht mitgenommen.
(?!abc)
Negativer Lookahead: Danach darf abc nicht folgen.
(?<=abc)
Positiver Lookbehind: Davor muss abc stehen.
(?<!abc)
Negativer Lookbehind: Davor darf abc nicht stehen.
^(?=.*\d)(?=.*[a-z]).{8,}$
Mehrere Lookaheads am Anfang prüfen Bedingungen unabhängig voneinander, hier: mindestens eine Ziffer, ein Kleinbuchstabe und 8 Zeichen.

Flags (Modifikatoren)

g
Global: alle Treffer statt nur des ersten (JavaScript).
i
Groß- und Kleinschreibung ignorieren.
m
Mehrzeilig: ^ und $ gelten für jede Zeile.
s
dotAll: Der Punkt passt auch auf Zeilenumbrüche.
u
Unicode: Codepoints statt UTF-16-Einheiten, erlaubt \p{…} und \u{…}.
v
Unicode-Sets (neuer als u): Mengenoperationen in Klassen wie [\p{L}--[a-z]]. Nicht zusammen mit u.
y
Sticky: Treffer nur genau an der Position lastIndex (JavaScript).
d
Indizes: liefert Start- und Endpositionen der Gruppen in match.indices (JavaScript).
(?i)
Inline-Flag am Anfang des Musters in PCRE, Python, Java. In JavaScript seit ES2025 nur als Gruppe (?i:…).

Ersetzen

$1 $2
Ersetzen in JavaScript: Inhalt der Gruppe 1, 2 … (Python und sed: \1).
$<name>
Benannte Gruppe in der Ersetzung (JavaScript); Python: \g<name>.
$&
Der gesamte Treffer (JavaScript); Python: \g<0>.
$` und $'
Text vor beziehungsweise nach dem Treffer (JavaScript).
$$
Ein wörtliches Dollarzeichen in der Ersetzung (JavaScript).

Escapen und Sonderzeichen

\. \* \+ \? \( \) \[ \] \{ \} \| \^ \$ \\
Sonderzeichen mit Backslash wörtlich suchen. \. findet einen echten Punkt.
\/
Schrägstrich escapen, wenn das Muster als Literal /…/ in JavaScript steht.
[.]
In einer Zeichenklasse verlieren die meisten Sonderzeichen ihre Bedeutung; nur ], \, ^ (am Anfang) und - brauchen Vorsicht.

Häufige Muster

^\d{5}$
Deutsche Postleitzahl (fünf Ziffern, prüft nicht, ob es sie gibt).
^[^\s@]+@[^\s@]+\.[^\s@]+$
Einfache Plausibilitätsprüfung für E-Mail-Adressen. Eine vollständige Prüfung nach RFC 5322 ist mit Regex kaum sinnvoll.
^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[0-2])\.\d{4}$
Datum im Format TT.MM.JJJJ (prüft nicht, ob der Tag im Monat existiert).
^\d{4}-\d{2}-\d{2}$
Datum nach ISO 8601 (JJJJ-MM-TT).
^((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$
IPv4-Adresse mit Werten 0 bis 255.
^#(?:[0-9a-fA-F]{3}){1,2}$
Hex-Farbe mit 3 oder 6 Stellen.
^[A-Z]{2}\d{2}[A-Z0-9]{11,30}$
Grobes IBAN-Format ohne Leerzeichen (die Prüfsumme lässt sich so nicht prüfen).
https?://[^\s<>"]+
Links in Fließtext finden (vereinfacht).
^[ \t]*$
Leere oder nur aus Leerzeichen und Tabs bestehende Zeilen (mit Flag m). Vorsicht mit ^\s*$: \s passt auch auf Zeilenumbrüche und fasst so mehrere Zeilen zu einem Treffer zusammen.
[ \t]+$
Leerzeichen und Tabs am Zeilenende (mit Flag m).
\b(\w+)\s+\1\b
Doppelte Wörter wie „die die“.

Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

Regex Cheat Sheet mit Beispielen

Dieser Regex-Spickzettel fasst die Regex Syntax zusammen, die Sie im Alltag brauchen: Zeichenklassen wie \d und \w, Anker, Quantifizierer, Gruppen, Lookahead und Lookbehind, Flags und die Platzhalter beim Ersetzen. Jeder Eintrag lässt sich kopieren, die meisten mit einem Klick auf „Testen“ direkt im Testfeld ausprobieren. Für längere Experimente mit Ersetzen und Gruppenübersicht gibt es den Regex-Tester.

Reguläre Ausdrücke sind nicht überall gleich. Das Testfeld nutzt die JavaScript-Engine Ihres Browsers. Python, PCRE (PHP), Java und .NET verstehen fast alles hier ebenso, unterscheiden sich aber in Details: Python schreibt benannte Gruppen als (?P<name>…), possessive Quantifizierer und atomare Gruppen fehlen in JavaScript, und \w umfasst in JavaScript keine Umlaute. Solche Unterschiede sind bei den Einträgen vermerkt.

Ein Beispiel: \d+(?= Euro) findet in „5 Euro, 7 Dollar“ nur die 5, weil der Lookahead prüft, was folgt, ohne es in den Treffer aufzunehmen. Die Quantifizierer * und + sind gierig und nehmen so viel wie möglich; mit angehängtem Fragezeichen werden sie genügsam. Grenzen: Muster wie die E-Mail-Prüfung sind Plausibilitätsprüfungen, keine vollständige Validierung nach Standard. Bei verschachtelten Quantifizierern wie (a+)+ droht katastrophales Backtracking.

Anleitung: Regex Spickzettel in 4 Schritten

  1. Im Feld „Suchen“ einen Begriff wie Lookahead, Ziffer oder Wortgrenze eingeben.
  2. Unter „Gruppe“ bei Bedarf auf Zeichenklassen, Quantifizierer, Gruppen, Flags, Ersetzen oder häufige Muster eingrenzen.
  3. Bei einem Eintrag auf „Testen“ klicken, um das Beispiel ins Testfeld zu laden, oder mit „Kopieren“ übernehmen.
  4. Im Testfeld Muster, Flags und Text anpassen und die Treffer prüfen.

Typische Anwendungsfälle

  • Schnelles Nachschlagen: Beim Programmieren die Schreibweise für Lookbehind oder benannte Gruppen in JavaScript und Python nachsehen.
  • Suchen und Ersetzen im Editor: Platzhalter wie $1 oder \1 für Ersetzungen in VS Code, sed oder Python finden.
  • Validierung bauen: Ein häufiges Muster etwa für Postleitzahlen übernehmen und im Testfeld anpassen.
  • Deutsche Texte: Klären, warum \w keine Umlaute findet und welche Zeichenklasse stattdessen passt.
Fragen

Häufige Fragen

Was ist der Unterschied zwischen gierigen und genügsamen Quantifizierern?

Gierige Quantifizierer wie * und + nehmen so viele Zeichen wie möglich und geben bei Bedarf wieder ab. Mit einem angehängten Fragezeichen (*? oder +?) nehmen sie so wenige wie möglich. Zwischen Trennzeichen wie Anführungszeichen ist die genügsame Form meist richtig.

Wie funktioniert ein Lookahead?

Ein Lookahead (?=…) prüft, ob an der aktuellen Stelle ein bestimmtes Muster folgt, ohne diese Zeichen in den Treffer aufzunehmen. Der negative Lookahead (?!…) verlangt, dass das Muster nicht folgt. Lookbehind (?<=…) und (?<!…) prüfen entsprechend, was davor steht.

Warum findet \w keine Umlaute?

In JavaScript, Java ohne Unicode-Option und vielen anderen Engines steht \w nur für A bis Z, a bis z, Ziffern und den Unterstrich. Für deutsche Wörter verwenden Sie eine Klasse wie [a-zA-ZäöüÄÖÜß] oder mit Flag u die Unicode-Eigenschaft \p{L}. In Python 3 umfasst \w bei Text-Strings dagegen auch Umlaute.

Gilt die Regex Syntax für alle Programmiersprachen gleich?

Der Kern ist weitgehend gleich: Klassen, Quantifizierer, Gruppen, Anker und Lookahead. Unterschiede gibt es bei benannten Gruppen, Inline-Flags, possessiven Quantifizierern, Unicode-Eigenschaften und den Platzhaltern beim Ersetzen. Testen Sie Muster immer in der Engine, in der sie später laufen.

Werden meine Testtexte gespeichert?

Nein. Das Testfeld läuft vollständig in Ihrem Browser, Muster und Text werden nicht übertragen.

Wie prüfe ich eine E-Mail-Adresse mit Regex?

Für eine grobe Prüfung reicht ein einfaches Muster wie ^[^\s@]+@[^\s@]+\.[^\s@]+$. Einen regulären Ausdruck, der alle gültigen Adressen nach Norm erkennt, gibt es praktisch nicht; ob eine Adresse existiert, zeigt nur eine Bestätigungsmail.

Was bedeuten die Regex-Flags g, i und m?

g sucht alle Treffer statt nur des ersten, i ignoriert Groß- und Kleinschreibung, und m lässt ^ und $ für jede Zeile statt für den ganzen Text gelten. In JavaScript stehen sie hinter dem Muster, etwa /muster/gi.

Weitere Werkzeuge

Das könnte auch helfen

Alle 358 Werkzeuge