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
[\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 |