Reguläre Ausdrücke Cheat Sheet: Häufig verwendete Muster
Wir haben die am häufigsten verwendeten Regex-Muster in der Webentwicklung mit Anwendungsbeispielen zusammengestellt.

Warum sollte man reguläre Ausdrücke lernen?
Reguläre Ausdrücke (Regular Expressions, Regex) sind für Entwickler wie ein Schweizer Taschenmesser. Am Anfang erscheinen sie schwierig, aber einmal vertraut, können dutzende Zeilen String-Verarbeitungscode in eine einzige Zeile verwandelt werden. E-Mail-Validierung, Telefonnummern-Extraktion, Log-Parsing, Textersetzung - bei fast allen String-Operationen glänzen reguläre Ausdrücke.
Viele Entwickler fürchten reguläre Ausdrücke, weil ihre Syntax auf den ersten Blick nicht verständlich ist. Code wie /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ sieht aus wie eine Geheimschrift. Aber wenn man die grundlegende Syntax versteht, kann auch dieses Muster logisch gelesen werden. In diesem Artikel erklären wir zunächst die Kerngrammatik regulärer Ausdrücke und analysieren dann häufig verwendete Muster Stück für Stück.
Die grundlegende Syntax systematisch verstehen
Die Syntax regulärer Ausdrücke lässt sich in vier Kategorien einteilen: Metazeichen, Quantifizierer, Gruppen und Anker.
Metazeichen: Zeichen mit besonderer Bedeutung
Metazeichen repräsentieren bestimmte Zeichenmengen oder Bedingungen.
| Symbol | Bedeutung | Beispiel |
|---|---|---|
. | Jedes Zeichen außer Zeilenumbruch | a.c → abc, adc, a1c |
\d | Ziffer (0-9) | \d+ → 123, 4567 |
\D | Nicht-Ziffer | \D+ → abc, !@# |
\w | Wortzeichen (a-z, A-Z, 0-9, _) | \w+ → hello_123 |
\W | Nicht-Wortzeichen | \W → Leerzeichen, Sonderzeichen |
\s | Whitespace (Leerzeichen, Tab, Zeilenumbruch) | \s+ → mehrere Leerzeichen |
\S | Nicht-Whitespace | \S+ → zusammenhängendes Wort |
Quantifizierer: Wiederholungen ausdrücken
Quantifizierer geben an, wie oft das vorherige Element wiederholt wird.
| Symbol | Bedeutung | Beispiel |
|---|---|---|
* | 0 oder mehr | ab* → a, ab, abb, abbb |
+ | 1 oder mehr | ab+ → ab, abb, abbb |
? | 0 oder 1 | colou?r → color, colour |
{n} | Genau n | \d{4} → 2025 |
{n,} | n oder mehr | \d{2,} → 10, 100, 1000 |
{n,m} | n bis m | \d{2,4} → 10, 100, 1000 |
Anker und Grenzen
Anker matchen nicht Zeichen selbst, sondern Positionen.
| Symbol | Bedeutung | Beispiel |
|---|---|---|
^ | String-Anfang | ^Hello → matcht "Hello World" |
$ | String-Ende | World$ → matcht "Hello World" |
\b | Wortgrenze | \bcat\b → nur "cat", nicht "catch" |
\B | Nicht-Wortgrenze | \Bcat → cat in "catch" |
Gruppen und Capturing
Mit Klammern können Muster gruppiert und gematchte Teile erfasst werden.
const dateStr = '2025-12-25';
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const match = dateStr.match(regex);
console.log(match[0]); // '2025-12-25' (gesamter Match)
console.log(match[1]); // '2025' (erste Gruppe - Jahr)
console.log(match[2]); // '12' (zweite Gruppe - Monat)
console.log(match[3]); // '25' (dritte Gruppe - Tag)
Praxismuster: Schritt für Schritt analysiert
1. E-Mail-Validierung
Das E-Mail-Muster ist ein klassisches Regex-Beispiel. Analysieren wir es Schritt für Schritt.
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
Muster-Analyse:
^- String-Anfang[a-zA-Z0-9._%+-]+- Local Part (vor @): 1 oder mehr Buchstaben, Ziffern, Punkt, Unterstrich usw.@- @-Symbol (Literal)[a-zA-Z0-9.-]+- Domainname: 1 oder mehr Buchstaben, Ziffern, Punkt, Bindestrich\.- Punkt (Escaping nötig)[a-zA-Z]{2,}- Top-Level-Domain: 2 oder mehr Buchstaben (com, de, museum usw.)$- String-Ende
Edge Cases:
Dieses Muster validiert die meisten gängigen E-Mails, entspricht aber nicht vollständig dem RFC 5322-Standard. Beispielsweise werden E-Mails mit Anführungszeichen wie "user name"@example.com nicht gematcht. In der Praxis ist es am sichersten, nach der Formatvalidierung eine tatsächliche E-Mail zur Bestätigung zu senden.
2. Passwortstärke-Prüfung
Um komplexe Passwortregeln mit Regex zu validieren, verwendet man Lookahead.
// Mindestens 8 Zeichen, Groß-/Kleinbuchstaben, Ziffern, Sonderzeichen
const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
Muster-Analyse:
(?=.*[a-z])- Muss mindestens 1 Kleinbuchstaben enthalten (Lookahead)(?=.*[A-Z])- Muss mindestens 1 Großbuchstaben enthalten(?=.*\d)- Muss mindestens 1 Ziffer enthalten(?=.*[@$!%*?&])- Muss mindestens 1 Sonderzeichen enthalten[A-Za-z\d@$!%*?&]{8,}- 8 oder mehr erlaubte Zeichen
Lookahead (?=...) prüft, ob das Muster existiert, konsumiert aber keine Zeichen. So können mehrere Bedingungen gleichzeitig geprüft werden.
3. Telefonnummer-Validierung
Ein Muster zur Validierung deutscher Mobilfunknummern:
const phoneRegex = /^(\+49|0)[1-9]\d{1,14}$/;
Muster-Analyse:
(\+49|0)- Beginnt mit +49 oder 0[1-9]- Erste Ziffer nach Vorwahl (keine 0)\d{1,14}- 1 bis 14 weitere Ziffern
phoneRegex.test('+491234567890'); // true
phoneRegex.test('01234567890'); // true
phoneRegex.test('012 345 678'); // false (Leerzeichen nicht unterstützt)
4. Deutsche Namen validieren
Für die Validierung von Namen können wir Unicode-Bereiche verwenden:
const nameRegex = /^[a-zA-ZäöüÄÖÜß\s-]{2,50}$/;
nameRegex.test('Hans Müller'); // true
nameRegex.test('K'); // false (weniger als 2 Zeichen)
nameRegex.test('123'); // false (Ziffern)
5. URL-Validierung
URL-Muster müssen verschiedene Formate unterstützen und werden daher komplex.
const urlRegex = /^(https?:\/\/)?(www\.)?[\w-]+(\.[a-z]{2,})+([\/\w.-]*)*\/?$/i;
Muster-Analyse:
(https?:\/\/)?- Protokoll (http:// oder https://) optional(www\.)?- www. optional[\w-]+- Domainname(\.[a-z]{2,})+- .com, .co.uk usw. Top-Level-Domain (1 oder mehr)([\/\w.-]*)*- Pfad (optional)\/?$- Abschließender Schrägstrich optionaliFlag - Groß-/Kleinschreibung ignorieren
6. IPv4-Adressen validieren
Jedes Oktett einer IPv4-Adresse muss im Bereich 0-255 liegen. Als Regex ausgedrückt:
const ipv4Regex = /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
Muster-Analyse (0-255 Matching):
25[0-5]- 250-2552[0-4]\d- 200-249[01]?\d\d?- 0-199
ipv4Regex.test('192.168.1.1'); // true
ipv4Regex.test('256.1.1.1'); // false (256 außerhalb des Bereichs)
ipv4Regex.test('192.168.001.001'); // true (führende Nullen erlaubt)
Performance-Optimierung
Die größte Ursache für langsame reguläre Ausdrücke ist Backtracking. Übermäßiger Einsatz von gierigen Quantifizierern kann die Performance drastisch verschlechtern.
Gierig vs. Faul
// Gierig (Greedy) - so viel wie möglich matchen
'<div>content</div><div>more</div>'.match(/<div>.*<\/div>/);
// Ergebnis: '<div>content</div><div>more</div>' (alles)
// Faul (Lazy) - so wenig wie möglich matchen
'<div>content</div><div>more</div>'.match(/<div>.*?<\/div>/);
// Ergebnis: '<div>content</div>' (nur das erste)
Ein ? nach dem Quantifizierer macht ihn faul: *?, +?, ??
Optimierungstipps
- Anker verwenden: Mit
^und$den Bereich klar begrenzen - Spezifische Zeichenklassen verwenden: Statt
.*besser[^<]*für Einschränkung - Non-Capturing Groups verwenden: Wenn kein Capturing nötig,
(?:...)verwenden
// Capturing Group - langsamer (speichert Match-Ergebnis)
/(abc)+/
// Non-Capturing Group - schneller (speichert nicht)
/(?:abc)+/
Unterschiede zwischen Sprachen
| Feature | JavaScript | Python | Java |
|---|---|---|---|
| Syntax | /pattern/flags | r'pattern' | Pattern.compile("pattern") |
| Unicode | /u Flag | Native Unterstützung | Pattern.UNICODE_CASE |
| Named Groups | (?<name>...) | (?P<name>...) | (?<name>...) |
| Lookahead | Unterstützt | Unterstützt | Unterstützt |
| Lookbehind | Variable Länge eingeschränkt | Unterstützt | Unterstützt |
Reguläre Ausdrücke in JavaScript
const str = 'Kontaktieren Sie uns unter support@example.com oder sales@example.com';
const regex = /[\w.-]+@[\w.-]+\.\w+/g;
// Alle Matches finden
const emails = str.match(regex);
// ['support@example.com', 'sales@example.com']
// Ersetzen
const masked = str.replace(regex, '[E-Mail ausgeblendet]');
// 'Kontaktieren Sie uns unter [E-Mail ausgeblendet] oder [E-Mail ausgeblendet]'
// Splitten
'a,b;c:d'.split(/[,;:]/);
// ['a', 'b', 'c', 'd']
// Iteratives Matching (matchAll)
for (const match of str.matchAll(/(\w+)@(\w+\.\w+)/g)) {
console.log(`Local: ${match[1]}, Domain: ${match[2]}`);
}
Toolypet Regex Tester
Das Schwierigste beim Schreiben regulärer Ausdrücke ist das fehlende sofortige Feedback. Der Toolypet Regex Tester löst dieses Problem:
- Geben Sie Muster und Teststring ein und sehen Sie Matching-Ergebnisse in Echtzeit
- Visuelle Anzeige, was jede Capture-Gruppe gematcht hat
- Einfaches Testen verschiedener Flags (g, i, m) mit Toggles
- Vorlagen für häufig verwendete Muster
Beim Debuggen komplexer regulärer Ausdrücke ist es viel effizienter, sie zuerst in Toolypet zu validieren, als direkt im Code zu testen.