Regex Cheatsheet

REFERENZ

Regex Cheatsheet

Die vollständige Referenz für reguläre Ausdrücke. Alle Zeichenklassen, Quantoren, Gruppen, Anker und Flags – mit Beispielen und Live-Tester.

Durchsuchbar Copy-Paste Mit Beispielen Live-Tester 80+ Einträge
So benutzt du das Cheatsheet
  • Suche oben: Tippe z.B. „Ziffer“ oder \d um sofort zu filtern
  • Klick auf ein Muster: Kopiert es in die Zwischenablage
  • Kategorien: Über die Navigation springst du direkt zu einer Gruppe
  • Beispiele: Jedes Muster zeigt, was es matcht (grün) und was nicht (rot)
  • Live-Tester: Unten kannst du jedes Muster direkt ausprobieren
Direkt testen
  • Klicke ein Muster an – es wird in die Zwischenablage kopiert.
  • Öffne den Regex Tester und füge es dort ein.
  • Dort kannst du Muster live ausprobieren und Treffer ansehen.

Einzelne Zeichen

5 Einträge
. Punkt – beliebiges Zeichen
Findet jedes einzelne Zeichen außer einem Zeilenumbruch. Mit dem s-Flag auch Zeilenumbrüche.
Beispiel: /a.c/ abc, aXc, a1c ✓
\ Backslash – Escape
Entwertet Sonderzeichen. Um nach einem echten Punkt zu suchen, schreibe \.. Wird auch für Kurzschreibweisen wie \d verwendet.
Beispiel: /\d\.\d/ 3.14, 2.71 ✓
abc Literalzeichen
Normale Zeichen wie a, B, 1 matchen sich selbst. Keine Sonderbedeutung.
Beispiel: /hallo/ hallo Welt ✓
\xHH Hexadezimales Zeichen
Findet ein Zeichen über seinen Hex-Code. \x41 = A, \x42 = B usw.
Beispiel: /\x41/ ABC ✓
\uHHHH Unicode-Zeichen
Findet ein Unicode-Zeichen über seinen Code Point. \u00e4 = ä, \u20ac = €.
Beispiel: /\u20ac\d+/ €99 ✓

Zeichenklassen

10 Einträge
\d Ziffer (digit)
Findet eine Ziffer von 0 bis 9. Entspricht [0-9].
Beispiel: /\d\d\d/ 123, 456 ✓
\D Keine Ziffer
Findet alles außer einer Ziffer. Gegenteil von \d.
Beispiel: /\D+/ abc, Hallo ✓
\w Wortzeichen (word)
Findet Buchstaben, Ziffern oder Unterstrich. Entspricht [a-zA-Z0-9_].
Beispiel: /\w+/ hello, Test_123 ✓
\W Kein Wortzeichen
Findet alles außer Wortzeichen – also Sonderzeichen und Leerraum.
Beispiel: /\W+/ !@#$, ✓
\s Leerraum (whitespace)
Findet Leerzeichen, Tab, Zeilenumbruch und andere unsichtbare Zeichen.
Beispiel: /\s+/ Hallo Welt ✓
\S Kein Leerraum
Findet alles außer Leerraum – nützlich um Wörter zu finden.
Beispiel: /\S+/ Hallo Welt ✓
[abc] Zeichenklasse
Findet eines der Zeichen a, b oder c. Kann Bereiche enthalten: [a-z].
Beispiel: /[aeiou]/ Hallo ✓
[^abc] Negierte Klasse
Findet alles außer a, b oder c. Das Dach ^ negiert.
Beispiel: /[^0-9]/ a1b2 ✓
[a-z] Zeichenbereich
Findet ein Zeichen aus dem Bereich a bis z. Auch [A-Z], [0-9], [a-zA-Z].
Beispiel: /[A-Z][a-z]+/ Hallo Welt ✓
[[:alpha:]] POSIX-Klassen
Vordefinierte Klassen in POSIX-Regex: [[:alpha:]], [[:digit:]], [[:alnum:]], [[:space:]].
Nur in POSIX (grep, sed) Nicht in JavaScript!

Quantoren (Wiederholungen)

8 Einträge
* Stern – 0 oder mehr
Findet das Zeichen 0 Mal oder öfter. Das Zeichen darf auch fehlen.
Beispiel: /ab*c/ ac, abc, abbbc ✓
+ Plus – 1 oder mehr
Findet das Zeichen mindestens 1 Mal. Muss vorhanden sein.
Beispiel: /ab+c/ abc, abbbc ✓
ac ✗
? Fragezeichen – optional
Findet das Zeichen 0 oder 1 Mal. Es ist optional.
Beispiel: /ab?c/ ac, abc ✓
abbc ✗
{n} Genau n Mal
Findet das Zeichen genau n Mal.
Beispiel: /\d{3}/ 123, 456 ✓
{n,m} Zwischen n und m
Findet das Zeichen mindestens n und höchstens m Mal.
Beispiel: /\d{2,4}/ 12, 123, 1234 ✓
{n,} Mindestens n Mal
Findet das Zeichen n Mal oder öfter (kein Maximum).
Beispiel: /\d{3,}/ 123, 12345 ✓
12 ✗
.* Greedy (Standard)
Quantoren sind standardmäßig gierig – sie matchen so viel wie möglich.
/<p>.*<\/p>/ <p>A</p><p>B</p> ✓
(matcht beides)
.*? Lazy – so wenig wie möglich
Durch ein ? nach dem Quantor wird er faul (lazy) und matcht so wenig wie möglich.
/<p>.*?<\/p>/ <p>A</p><p>B</p> ✓
(matcht nur das erste)

Anker & Grenzen

5 Einträge
^ Zeilenanfang
Matcht den Anfang einer Zeile. Mit m-Flag in jeder Zeile, sonst nur am String-Anfang.
Beispiel: /^Hallo/m Hallo Welt ✓
$ Zeilenende
Matcht das Ende einer Zeile. Mit m-Flag in jeder Zeile, sonst nur am String-Ende.
Beispiel: /Welt$/m Hallo Welt ✓
\b Wortgrenze
Matcht die Grenze zwischen Wortzeichen und Nicht-Wortzeichen. Wichtig: matcht kein Zeichen, sondern eine Position.
Beispiel: /\bHallo\b/ Hallo Welt ✓
HalloWelt ✗
\B Keine Wortgrenze
Matcht eine Position innerhalb eines Wortes (keine Grenze).
Beispiel: /\BHallo/ HalloWelt — matcht "Hallo" innerhalb ✓
\A \z String-Anfang/-Ende
\A matcht den echten String-Anfang, \z das echte String-Ende (unabhängig von m-Flag).
Nur in PCRE, Python, Ruby Nicht in JavaScript!

Gruppen & Alternativen

6 Einträge
(...) Erfassende Gruppe
Fasst Zeichen zusammen und erfasst sie. Später als $1, $2... verfügbar.
/(\d{4})-(\d{2})/ auf "2024-01" Gruppe 1: 2024, Gruppe 2: 01
(?:...) Nicht-erfassende Gruppe
Fasst zusammen, erfasst aber nicht. Nützlich für Gruppierung ohne Backreference.
/(?:https?|ftp):\/\// http://, https://, ftp://
| Alternation (ODER)
Matcht entweder das Eine oder das Andere. Wie ein logisches ODER.
/Hallo|Hi|Hey/ Hallo, Hi, Hey ✓
(?<name>...) Benannte Gruppe
Gruppe mit Namen statt Nummer. Zugriff z.B. über match.groups.name.
/(?<year>\d{4})-(?<month>\d{2})/ year: 2024, month: 01
\1 Backreference
Verweist auf eine bereits erfasste Gruppe. Findet z.B. wiederholte Wörter.
/(\w+) \1/ auf "hallo hallo" hallo hallo ✓
(?>...) Atomare Gruppe
Verhindert Backtracking in der Gruppe. Wichtig gegen ReDoS.
Nur in PCRE, Java Nicht in JavaScript!

Lookarounds

4 Einträge
(?=...) Positive Lookahead
Matcht nur, wenn danach ein bestimmtes Muster folgt. Das Muster selbst wird nicht konsumiert.
/\d+(?= EUR)/ auf "100 EUR" 100 EUR ✓
(?!...) Negative Lookahead
Matcht nur, wenn danach NICHT ein bestimmtes Muster folgt.
/\d+(?! EUR)/ auf "100 USD" 100 USD ✓
(?<=...) Positive Lookbehind
Matcht nur, wenn davor ein bestimmtes Muster steht.
/(?<=EUR )\d+/ auf "EUR 100" EUR 100 ✓
(?<!...) Negative Lookbehind
Matcht nur, wenn davor NICHT ein bestimmtes Muster steht.
/(?<!EUR )\d+/ auf "USD 100" USD 100 ✓

Flags (Optionen)

6 Einträge
g Global
Findet alle Treffer, nicht nur den ersten. Ohne g wird nur 1 Treffer gefunden.
/\d+/g auf "a1 b2 c3" 1, 2, 3 ✓
i Ignore Case
Ignoriert Groß- und Kleinschreibung.
/hallo/i auf "HALLO" HALLO ✓
m Multiline
^ und $ matchen Anfang/Ende jeder Zeile, nicht nur des ganzen Strings.
/^\w+/m auf "Zeile1\nZeile2" Zeile1, Zeile2 ✓
s Dotall
Der Punkt . matcht auch Zeilenumbrüche.
/a.b/s auf "a\nb" a\nb ✓
u Unicode
Aktiviert Unicode-Modus – wichtig für Emojis und Sonderzeichen.
/\p{Emoji}/u 😀 ✓
y Sticky
Matcht nur ab der aktuellen Position (lastIndex) – sonst kein Suchen.
Tokenizer-Modus Nützlich für Lexer/Parser

Sonderzeichen escapen

12 Einträge
\. Punkt (wörtlich)
Findet einen echten Punkt, nicht das beliebige Zeichen.
/\d+\.\d+/ auf "3.14" 3.14 ✓
\* Sternchen (wörtlich)
Findet ein echtes *.
/a\*b/ auf "a*b" a*b ✓
\+ Plus (wörtlich)
Findet ein echtes +.
/\+\d+/ auf "+49" +49 ✓
\? Fragezeichen (wörtlich)
Findet ein echtes ?.
/was\?/ auf "was?" was? ✓
\| Pipe (wörtlich)
Findet ein echtes |.
/a\|b/ auf "a|b" a|b ✓
\( \) Klammern (wörtlich)
Findet echte runde Klammern.
/\(\d+\)/ auf "(42)" (42) ✓
\[ \] Eckige Klammern (wörtlich)
Findet echte eckige Klammern.
/\[\w+\]/ auf "[test]" [test] ✓
\{ \} Geschweifte Klammern
Findet echte { und }.
/\{\d+\}/ auf "{42}" {42} ✓
\^ Dach (wörtlich)
Findet ein echtes ^.
/a\^b/ auf "a^b" a^b ✓
\$ Dollar (wörtlich)
Findet ein echtes $.
/\$\d+/ auf "$99" $99 ✓
\\ Backslash (wörtlich)
Findet einen echten \.
/C:\\\\/ auf "C:\" C:\ ✓
\/ Schrägstrich (wörtlich)
Findet einen echten /. Wichtig in JavaScript-Regex-Literals.
/a\/b/ auf "a/b" a/b ✓

Praxis-Rezepte (Copy-Paste)

10 Einträge

E-Mail-Adresse (einfach)

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
Prüft das grundlegende Format einer E-Mail-Adresse. Deckt 99% der Fälle ab.

URL (http/https)

https?:\/\/[^\s]+
Findet URLs, die mit http:// oder https:// beginnen.

Deutsche Telefonnummer

(\+49|0)[\s-]?\d{2,4}[\s-]?\d{6,8}
Erkennt deutsche Festnetz- und Mobilfunknummern mit und ohne Ländervorwahl.

Datum (ISO: YYYY-MM-DD)

\d{4}-\d{2}-\d{2}
Findet Datumsangaben im ISO-Format, z.B. 2024-01-15.

Uhrzeit (HH:MM:SS)

([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?
Findet Uhrzeiten von 00:00 bis 23:59 – Sekunden sind optional.

IPv4-Adresse

\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b
Findet gültige IPv4-Adressen (0.0.0.0 bis 255.255.255.255).

Hex-Farbcode (CSS)

#(?:[0-9a-fA-F]{3}){1,2}\b
Erkennt 3- oder 6-stellige Hex-Farbcodes wie #fff oder #3498db.

Deutsche Postleitzahl

\b\d{5}\b
Erkennt 5-stellige Zahlen – nützlich als PLZ-Filter.

Passwort (stark)

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
Mindestens 8 Zeichen, je 1 Klein-, Großbuchstabe, Ziffer und Sonderzeichen.

HTML-Tags finden

<\/?[a-zA-Z][a-zA-Z0-9]*[^>]*>
Findet öffnende und schließende HTML-Tags wie <div> oder <\/p>.

Wichtige Hinweise

JavaScript vs. PCRE

Nicht alle Regex-Features funktionieren überall:

  • JavaScript: Kein \A, \z, keine Atomic Groups, kein Possessive
  • PCRE (PHP, Perl): Vollständigste Syntax
  • Python: re Modul, Lookbehind mit fester Länge
  • Go/Rust: RE2-Engine ohne Backreferences
Teste Regex in der Zielsprache!

ReDoS vermeiden

Bestimmte Muster können exponentiell langsam werden:

  • ❌ (a+)+b — verschachtelte Quantoren
  • ❌ (a|a)+b — überlappende Alternation
  • ✓ a+b — einfach halten
  • ✓ [^a]+ — Zeichenklasse statt Alternation
Kein + direkt auf Gruppe mit +

Performance-Tipps

So werden Regex schneller:

  • Anker setzen: ^...$ reduziert Suchraum
  • Zeichenklassen statt Alternation: [abc] statt a|b|c
  • Lazy nur wenn nötig: .*? ist langsamer als .*
  • Konkrete Zeichen: abc statt a.c wenn möglich
Je konkreter, desto schneller

Lesbarkeit

So bleiben Regex verständlich:

  • Kommentare: Mit x-Flag und # Kommentar
  • Named Groups: (?<jahr>\d{4}) statt (\d{4})
  • Aufteilen: Lange Regex in Teile zerlegen
  • Konstanten: Regex als benannte Konstanten speichern
Lieber lesbar als clever

Übersicht: Zeichenklassen

Muster Bedeutung Entspricht Gegenteil
\d Eine Ziffer [0-9] \D
\w Wortzeichen [a-zA-Z0-9_] \W
\s Leerraum [ \t\n\r\f\v] \S
. Beliebiges Zeichen [^\n] —
\b Wortgrenze Position \B
\n Zeilenumbruch — —
\t Tab — —

FAQ – Häufige Fragen

Fragen zum Cheatsheet

Wie lese ich das Cheatsheet?

Jeder Eintrag besteht aus vier Teilen:

  • Muster: Das Regex-Zeichen (z.B. \d) – klick darauf zum Kopieren
  • Name: Kurzbeschreibung (z.B. „Ziffer“)
  • Beschreibung: Was das Muster genau macht
  • Beispiel: Ein konkreter Anwendungsfall mit ✓ und ✗

Tipp: Nutze die Suche oben, um schnell zu filtern.

Wie kopiere ich ein Muster?

Klicke einfach auf den Code-Block (z.B. \d). Das Muster wird in die Zwischenablage kopiert.

Du erhältst eine Bestätigung in der Ecke. Dann kannst du es im Regex Tester oder in deinem Code einfügen.

Was ist der Unterschied zwischen PCRE und JavaScript-Regex?

JavaScript unterstützt weniger Features als PCRE (Perl Compatible Regular Expressions):

  • Nicht in JS: \A, \z, Atomic Groups (?>...), Possessive Quantoren a++
  • In JS: \d, \w, \s, Lookahead, Lookbehind (modern)
  • PCRE (PHP, Perl, Python): Umfangreichste Syntax

Wichtig: Teste deine Regex immer in der Zielsprache, nicht nur online.

Gibt es Regex auch in Excel?

Excel: Standardmäßig nur eingeschränkte Wildcards (*, ?). Echter Regex nur in VBA mit dem RegExp-Objekt.

Google Sheets: Volle Regex-Unterstützung mit:

  • REGEXMATCH() – prüft Übereinstimmung
  • REGEXEXTRACT() – extrahiert Treffer
  • REGEXREPLACE() – ersetzt Treffer

LibreOffice Calc: Regex in „Suchen & Ersetzen“ mit Option „Regulärer Ausdruck“.

Was ist der Unterschied zwischen \d und [0-9]?

Praktisch: Nichts. Beide matchen eine Ziffer von 0 bis 9.

Unterschiede:

  • \d ist kürzer und lesbarer
  • [0-9] ist explizit und funktioniert auch ohne Unicode-Modus
  • Im Unicode-Modus matcht \d auch Ziffern anderer Schriftsysteme (z.B. arabische ٠١٢)

Empfehlung: \d verwenden – kürzer und Standard.

Wo finde ich einen Live-Tester?

Auf dieser Seite gibt es einen eigenen Regex Tester – mit:

  • Live-Vorschau aller Treffer
  • Hervorhebung im Text
  • Erklärungen des Musters in Klartext
  • Capture-Groups einzeln aufgelistet
  • 8 Praxis-Beispielen zum Laden
Was ist der Unterschied zwischen * und .* ?

* ist ein Quantor – er braucht ein Zeichen davor:

  • a* = 0 oder mehr a
  • \d* = 0 oder mehr Ziffern

.* bedeutet:

  • . = beliebiges Zeichen
  • * = 0 oder mehr davon
  • Zusammen: alles

Merksatz: Der Stern allein ist bedeutungslos. Er bezieht sich auf das Zeichen davor.

Kann ich Regex auch ohne Programmierung nutzen?

Ja! Regex begegnet dir in vielen Alltagstools:

  • VS Code / Sublime: Suchen & Ersetzen mit Regex-Modus
  • Notepad++: Strg+H → Suchmodus „Regulärer Ausdruck“
  • Google Sheets: REGEXMATCH, REGEXEXTRACT
  • TextEdit / Pages: In manchen Versionen mit Regex-Suche
  • Linux-Konsole: grep -E "pattern"

Praxis-Tipp: Log-Dateien filtern, große Listen bereinigen, Daten umformen.

Was sind Greedy und Lazy Quantoren?

Greedy (Standard): Matcht so viel wie möglich.

Lazy: Matcht so wenig wie möglich – durch ? nach dem Quantor.

Beispiel auf <p>A</p><p>B</p>:

  • <p>.*</p> (greedy) → <p>A</p><p>B</p>
  • <p>.*?</p> (lazy) → <p>A</p>

Faustregel: Bei Text-Extraktion meist lazy verwenden.

Warum matcht mein Regex nicht, was ich erwarte?

Die häufigsten Ursachen:

  • Sonderzeichen nicht escaped: . ist nicht gleich \.
  • Kein g-Flag: Nur der erste Treffer wird gefunden
  • Groß-/Kleinschreibung: Ohne i wird unterschieden
  • Greedy-Matching: Zu viel Text wird erfasst → .*? probieren
  • Anker fehlen: \d{3} findet auch Teile von 12345
  • Zeilenumbrüche: . matcht sie nicht → s-Flag

Tipp: Im Tester mit Beispieldaten prüfen.

Zusammenfassung

Die wichtigsten Bausteine

  • Zeichenklassen: \d (Ziffer), \w (Wort), \s (Leerraum), . (beliebig)
  • Quantoren: * (0+), + (1+), ? (0/1), {n,m} (Bereich)
  • Anker: ^ (Anfang), $ (Ende), \b (Wortgrenze)
  • Gruppen: (...) erfassend, (?:...) nicht-erfassend
  • Alternation: | (ODER)
  • Lookarounds: (?=...), (?!...), (?<=...), (?<!...)
  • Flags: g (alle), i (case), m (multiline), s (dotall), u (unicode)
  • Escaping: Sonderzeichen mit \ entwerten
  • Rezepte: E-Mail, URL, Telefon, Datum, IPv4, Hex-Farbe
  • Vorsicht: ReDoS durch verschachtelte Quantoren vermeiden

Weitere Tools

Regex Tester

Teste deine Muster live mit Hervorhebung und Erklärungen.

Zum Tester
JSON Formatter

Formatiere und validiere JSON mit Syntax-Highlighting.

Zum Tool
Hash Generator

MD5, SHA-1, SHA-256 und SHA-512 für Text und Dateien.

Zum Tool
UUID Generator

Generiere UUIDs v1, v4, v5 und v7 für deine Anwendungen.

Zum Tool