Regex Cheatsheet

Übersicht aller JavaScript-Regex-Syntaxelemente: Zeichenklassen, Anker, Quantifizierer, Gruppen, Flags, Methoden und häufige Muster.

Keine Einträge gefunden.
Zeichenklassen
.
Beliebiges Zeichen außer \n a. → ab, ac, a1
\d
Ziffer · [0-9] \d{4} → 2024
\D
Kein Zifferzeichen \D+ → abc
\w
Wortzeichen · [a-zA-Z0-9_] \w+ → hallo_1
\W
Kein Wortzeichen \W → ! oder Leerzeichen
\s
Leerzeichen, Tab, Zeilenumbruch \s+ → mehrere Leerzeichen
\S
Kein Leerzeichen \S+ → text_ohne_lücke
[abc]
Eines der Zeichen a, b oder c [aeiou] → Vokal
[^abc]
Keines der Zeichen a, b oder c [^\d] → kein Digit
[a-z]
Zeichen im Bereich a bis z [a-zA-Z] → Buchstabe
[\u0041]
Unicode-Zeichen (hier: A) [\u00C4] → Ä
Quantifizierer
*
0 oder mehr (gierig) ab* → a, ab, abbb
+
1 oder mehr (gierig) ab+ → ab, abbb
?
0 oder 1 (gierig) colou?r → color, colour
{n}
Genau n Vorkommen \d{4} → 2024
{n,}
Mindestens n Vorkommen \d{2,} → 99, 100
{n,m}
Zwischen n und m Vorkommen \d{2,4} → 12, 123
*?
0 oder mehr (nicht-gierig) a.*?b → kürzester Treffer
+?
1 oder mehr (nicht-gierig) a.+?b → kürzester Treffer
??
0 oder 1 (nicht-gierig) a?? → bevorzugt kein a
{n,m}?
n–m Vorkommen (nicht-gierig) nimmt so wenig wie möglich
Anker & Grenzen
^
Anfang der Zeichenkette (mit m: Zeilenanfang) ^Hallo → nur am Anfang
$
Ende der Zeichenkette (mit m: Zeilenende) Ende$
\b
Wortgrenze \bwort\b
\B
Keine Wortgrenze innen\Bwort
(?=...)
Lookahead – was folgt (ohne zu matchen) \d(?=px) → 12 in 12px
(?!...)
Negativer Lookahead \d(?!px)
(?<=...)
Lookbehind – was davor stehtES2018 (?<=\$)\d+
(?<!...)
Negativer LookbehindES2018 (?\d+
Gruppen & Referenzen
(abc)
Fangende Gruppe – Inhalt wird gespeichert match[1]
(?:abc)
Nicht-fangende Gruppe kein Capture
(?<name>...)
Benannte GruppeES2018 match.groups.name
\1, \2
Rückreferenz im Muster (Gruppe 1, 2 …) (\w+) \1 → Wiederholung
$1, $2
Gruppe in replace() str.replace(re, '$1')
$&
Gesamter Treffer in replace() → ganzes Match
$'
Text nach dem Treffer in replace() → Suffix
$`
Text vor dem Treffer in replace() → Präfix
$0
Gesamter Treffer (Alias für $&) → ganzes Match
(?|...)
Alternation innerhalb einer Gruppe (a|b|c)
Flags
g
Global – alle Treffer zurückgeben match(), matchAll()
i
Case-insensitive – Groß-/Kleinschreibung ignorieren A matcht a
m
Multiline – ^ und $ wirken pro Zeile mit \n im Text
s
Dotall – . trifft auch \nES2018 über Zeilenumbrüche
u
Unicode – vollständige Unicode-Unterstützung \u{1F600} usw.
y
Sticky – sucht nur ab lastIndex kein Überspringen
d
Indices – Positionen der GruppenES2022 match.indices
Sonderzeichen & Escape
\n
Zeilenumbruch (Line Feed)
\r
Wagenrücklauf (Carriage Return)
\t
Tabulator
\0
Null-Byte
\xhh
Hex-Zeichen \x41 → A
\uhhhh
Unicode-Zeichen (4 Hex) \u0041 → A
\u{hhhh}
Unicode-Codepunkt (mit u-Flag) \u{1F600} → 😀
\. \* \+
Literales Sonderzeichen escapen \. matcht Punkt
\( \) \[
Klammern escapen literale Klammer
\{ \} \?
Geschweifte Klammer, Fragezeichen literal
\\
Literaler Backslash matcht \
\| \^ \$
Pipe, Dach, Dollar escapen literal
String-Methoden
str.match(re)
Erstes Match (ohne g) oder alle Matches (mit g) · null bei keinem Treffer Array oder null
str.matchAll(re)
Iterator aller Matches inkl. Gruppen · braucht g-FlagES2020 for..of
str.replace(re,neu)
Ersten (ohne g) oder alle Treffer ersetzen $1 für Gruppen
str.replaceAll(re,neu)
Alle Treffer ersetzen · braucht g-FlagES2021
str.search(re)
Index des ersten Treffers · -1 wenn nicht gefunden ignoriert g
str.split(re)
Zeichenkette an Treffern aufteilen 'a,b;c'.split(/[,;]/)
RegExp-Methoden & Eigenschaften
re.test(str)
true wenn Treffer gefunden · schnellste Methode Boolean
re.exec(str)
Nächsten Treffer zurückgeben · mit g iterierbar Array oder null
new RegExp(pat, flags)
RegExp zur Laufzeit erstellen (Variablen möglich) dynamisches Muster
re.source
Muster als Zeichenkette (ohne / und Flags) String
re.flags
Alle aktiven Flags als Zeichenkette 'gi'
re.global
true wenn g-Flag gesetzt Boolean
re.lastIndex
Position für nächste Suche (bei g/y) Zahl, schreibbar
re.ignoreCase
true wenn i-Flag gesetzt Boolean
re.multiline
true wenn m-Flag gesetzt Boolean
re.dotAll
true wenn s-Flag gesetzt Boolean
re.unicode
true wenn u-Flag gesetzt Boolean
re.sticky
true wenn y-Flag gesetzt Boolean
Häufige Muster
E-Mail [\w.+\-]+@[\w\-]+\.[a-zA-Z]{2,} Einfache E-Mail-Adresse (ohne vollständige RFC-Validierung)
URL https?:\/\/[\w\-.]+\.[a-z]{2,}[\/\w\-?=&#%.]* HTTP- und HTTPS-URLs mit optionalem Pfad und Query-String
IPv4 \b(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\b IPv4-Adresse – Gruppen 1–4 enthalten die Oktette
Datum DE (\d{1,2})\.(\d{1,2})\.(\d{4}) Deutsches Datum TT.MM.JJJJ – Gruppen: Tag, Monat, Jahr
Datum ISO (\d{4})-(\d{2})-(\d{2}) ISO-8601-Datum JJJJ-MM-TT
PLZ (DE) \b\d{5}\b Deutsche Postleitzahl (5 Ziffern)
Hex-Farbe #([0-9a-fA-F]{6}|[0-9a-fA-F]{3})\b CSS-Hex-Farbe: #rrggbb oder #rgb
IBAN (DE) DE\d{2}[0-9A-Z]{18} Deutsche IBAN (22 Zeichen gesamt)
Telefon (DE) (?:\+49|0)[\s\-]?(?:\(\d+\)[\s\-]?|\d+[\s\-]?)\d[\d\s\-]{5,} Deutsche Telefonnummer mit Vorwahl
KFZ-Kennz. [A-ZÄÖÜ]{1,3}[\s\-][A-Z]{1,2}[\s\-]\d{1,4}[HE]? Deutsches Kfz-Kennzeichen (z. B. MÜ AB 123)
Starkes Passwort (?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,} Mind. 8 Zeichen, Klein-/Großbuchstabe, Ziffer, Sonderzeichen
HTML-Tag <([a-zA-Z][a-zA-Z0-9]*)\b[^>]*>(.*?)<\/\1> Einfacher HTML-Tag mit Inhalt (Gruppe 1: Tagname, 2: Inhalt)
Leerzeilen ^\s*\n Leere oder nur Leerzeichen enthaltende Zeilen (m-Flag)
Whitespace trim ^\s+|\s+$ Führende und nachfolgende Leerzeichen (g-Flag → trim-Ersatz)
Doppelte Wörter \b(\w+)\s+\1\b Doppelt vorkommendes Wort (Gruppe 1: das Wort)
Slug ^[a-z0-9]+(?:-[a-z0-9]+)*$ URL-Slug: Kleinbuchstaben, Ziffern, Bindestriche
Semver (\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9.]+))? Semantic Version – Gruppen: Major, Minor, Patch, Pre-Release
Base64 ^[A-Za-z0-9+\/]+=*$ Base64-kodierter String