Toolypet
Back to Blog
Dev

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.

Toolypet Team7 min read
Reguläre Ausdrücke Cheat Sheet: Häufig verwendete Muster

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.

SymbolBedeutungBeispiel
.Jedes Zeichen außer Zeilenumbrucha.c → abc, adc, a1c
\dZiffer (0-9)\d+ → 123, 4567
\DNicht-Ziffer\D+ → abc, !@#
\wWortzeichen (a-z, A-Z, 0-9, _)\w+ → hello_123
\WNicht-Wortzeichen\W → Leerzeichen, Sonderzeichen
\sWhitespace (Leerzeichen, Tab, Zeilenumbruch)\s+ → mehrere Leerzeichen
\SNicht-Whitespace\S+ → zusammenhängendes Wort

Quantifizierer: Wiederholungen ausdrücken

Quantifizierer geben an, wie oft das vorherige Element wiederholt wird.

SymbolBedeutungBeispiel
*0 oder mehrab* → a, ab, abb, abbb
+1 oder mehrab+ → ab, abb, abbb
?0 oder 1colou?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.

SymbolBedeutungBeispiel
^String-Anfang^Hello → matcht "Hello World"
$String-EndeWorld$ → matcht "Hello World"
\bWortgrenze\bcat\b → nur "cat", nicht "catch"
\BNicht-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 optional
  • i Flag - 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-255
  • 2[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

  1. Anker verwenden: Mit ^ und $ den Bereich klar begrenzen
  2. Spezifische Zeichenklassen verwenden: Statt .* besser [^<]* für Einschränkung
  3. 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

FeatureJavaScriptPythonJava
Syntax/pattern/flagsr'pattern'Pattern.compile("pattern")
Unicode/u FlagNative UnterstützungPattern.UNICODE_CASE
Named Groups(?<name>...)(?P<name>...)(?<name>...)
LookaheadUnterstütztUnterstütztUnterstützt
LookbehindVariable Länge eingeschränktUnterstütztUnterstü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.

RegexRegular ExpressionValidationPattern Matching