Reguläre Ausdrücke, die jeder Entwickler beherrschen sollte
Reguläre Ausdrücke (Regex) gehören zu den leistungsfähigsten Werkzeugen im Werkzeugkasten eines Entwicklers. Sie ermöglichen es, Text mit prägnanten Mustern zu durchsuchen, zu validieren und zu transformieren – Operationen, die mit prozeduralem Code Dutzende von Zeilen erfordern könnten. Obwohl die Regex-Syntax auf den ersten Blick kryptisch erscheinen mag, deckt die Beherrschung einer Kernmenge von Mustern die überwiegende Mehrheit der praktischen Anwendungsfälle ab. Dieser Leitfaden stellt die regulären Ausdrücke vor, die Sie immer wieder verwenden werden, und erklärt detailliert, wie jedes Muster funktioniert.
Grundlagen der regulären Ausdrücke – Eine Wiederholung
Bevor wir in die spezifischen Muster eintauchen, hier eine kurze Wiederholung der grundlegenden Metazeichen, die die Basis aller regulären Ausdrücke bilden:
| Metazeichen | Bedeutung | Beispiel |
|---|---|---|
| . | Beliebiges einzelnes Zeichen | a.c entspricht abc, a1c, a c |
| * | Vorheriges Zeichen null- oder mehrmals | ab*c entspricht ac, abc, abbc |
| + | Vorheriges Zeichen ein- oder mehrmals | ab+c entspricht abc, abbc |
| ? | Vorheriges Zeichen null- oder einmal | colou?r entspricht color, colour |
| ^ | Anfang der Zeichenkette | ^Hello entspricht Hello am Anfang |
| $ | Ende der Zeichenkette | world$ entspricht world am Ende |
| [] | Zeichenklasse | [aeiou] entspricht einem beliebigen Vokal |
| () | Erfassungsgruppe | (ab)+ entspricht ab, abab |
| | | Alternation (oder) | cat|dog entspricht cat oder dog |
| \d | Ziffer [0-9] | \d{3} entspricht 123 |
| \w | Wortzeichen [a-zA-Z0-9_] | \w+ entspricht hello_123 |
| \s | Leerzeichen | a\sb entspricht a b |
1. E-Mail-Validierung
Grundlegendes E-Mail-Muster
Dieses Muster validiert die grundlegende Struktur einer E-Mail-Adresse: ein oder mehrere erlaubte Zeichen vor dem @, gefolgt von einem Domainnamen mit mindestens einem Punkt und einer Top-Level-Domain aus zwei oder mehr Buchstaben. Es erkennt die meisten ungültigen Formate und lässt gleichzeitig legitime Adressen zu.
Treffer: user@example.com, john.doe+tag@company.co.uk
Keine Treffer: user@, @example.com, user@.com
2. URL-Validierung
HTTP/HTTPS-URL-Muster
Dieses Muster erkennt HTTP- und HTTPS-URLs mit optionalem www-Präfix, einschließlich Domainname und optionalem Pfad. Das s? macht das "s" in https optional, (www\.)? macht das www-Präfix optional. Das Pfadsegment (\/[^\s]*)? erlaubt beliebige Zeichen außer Leerzeichen nach dem Domainnamen.
Treffer: https://example.com, http://www.example.com/path/to/page
Keine Treffer: ftp://example.com, example.com (kein Protokoll)
3. Telefonnummern-Validierung
Internationale Telefonnummern
Dieses Muster folgt dem internationalen Telefonnummernformat E.164. Es erlaubt ein optionales +-Präfix, erfordert eine erste Ziffer von 1-9 (keine führende Null) und insgesamt maximal 15 Ziffern. Dies ist das zuverlässigste Format für die internationale Speicherung und Validierung von Telefonnummern.
Treffer: +14155552671, 442071838750
Keine Treffer: +01xxxxxxxxx, 123
4. Passwortstärke
Muster für starke Passwörter
Dieses Muster erzwingt eine starke Passwortrichtlinie: mindestens 8 Zeichen mit mindestens einem Kleinbuchstaben, einem Großbuchstaben, einer Ziffer und einem Sonderzeichen. Die (?=.*[...])-Syntax verwendet positive Lookaheads, um das Vorhandensein jedes Zeichentyps zu prüfen, ohne Zeichen zu verbrauchen.
Treffer: MyP@ss1word, Str0ng!Pass
Keine Treffer: password, Password1, P@ss
5. IP-Adressen-Validierung
IPv4-Adressen
Dieses Muster validiert IPv4-Adressen mit korrekter Bereichsprüfung. Jedes Oktett muss zwischen 0 und 255 liegen. Das Muster verwendet Alternation: 250-255 (25[0-5]), 200-249 (2[0-4]\d) oder 0-199 ([01]?\d\d?). Dies wird dreimal nach einem Punkt wiederholt und dann ein letztes Mal für das letzte Oktett.
Treffer: 192.168.1.1, 10.0.0.1, 255.255.255.0
Keine Treffer: 256.1.1.1, 192.168.1, 192.168.1.1.1
6. Datumsformat-Validierung
YYYY-MM-DD (ISO 8601)
Dieses Muster validiert Daten im ISO-8601-Format (YYYY-MM-DD). Es prüft auf eine vierstellige Jahreszahl, einen Monat zwischen 01-12 und einen Tag zwischen 01-31. Beachten Sie, dass dieses Muster das Format, aber nicht die logische Gültigkeit des Datums validiert (z. B. erlaubt es 2026-02-31). Für eine vollständige Validierung parsen Sie das Datum und prüfen Sie es programmatisch.
Treffer: 2026-05-20, 2025-01-01, 2024-12-31
Keine Treffer: 2026-5-20, 2026-13-01, 26-05-20
7. Hexadezimale Farbcodes
CSS-Hexadezimalfarben
Dieses Muster erkennt hexadezimale CSS-Farbcodes, sowohl die 3-stellige Kurzform (#fff) als auch die 6-stellige Vollform (#ffffff). Der {1,2}-Quantor erlaubt 1 oder 2 Wiederholungen der 3-stelligen Hex-Zifferngruppe und unterstützt damit beide Formate.
Treffer: #fff, #FF5733, #1e293b
Keine Treffer: fff, #ff, #1234567
8. Slug / URL-sichere Zeichenketten
URL-Slug-Muster
Dieses Muster validiert URL-Slugs: kleingeschriebene alphanumerische Zeichenketten mit Bindestrichen als Trennzeichen. Es stellt sicher, dass keine führenden oder nachgestellten Bindestriche und keine aufeinanderfolgenden Bindestriche vorhanden sind. Dieses Format ist SEO-freundlich und sicher für URLs, Dateinamen und Bezeichner.
Treffer: my-blog-post, regex-patterns-guide, tool123
Keine Treffer: My-Post, -slug, slug-, my--post
9. Kreditkartennummern
Allgemeines Kreditkarten-Muster
Dieses Muster validiert die wichtigsten Kreditkartennummern: Visa (beginnt mit 4, 13 oder 16 Ziffern), Mastercard (beginnt mit 51-55, 16 Ziffern), American Express (beginnt mit 34 oder 37, 15 Ziffern) und Discover (beginnt mit 6011 oder 65, 16 Ziffern). Kombinieren Sie dies mit dem Luhn-Algorithmus für eine vollständige Validierung.
10. HTML-Tag-Erkennung
HTML-Tag-Extraktion
Dieses Muster erkennt öffnende und schließende HTML-Tags mit Inhalt. Die erste Erfassungsgruppe ([a-z][a-z0-9]*) erfasst den Tag-Namen, und die Rückreferenz \1 stellt sicher, dass das schließende Tag mit dem öffnenden übereinstimmt. (.*?) verwendet einen lazy Match, um den Inhalt zwischen den Tags mit der kürzesten Übereinstimmung zu erfassen.
Tipps für bessere reguläre Ausdrücke
- Fangen Sie einfach an: Schreiben Sie zuerst die grundlegendste Version des Musters und fügen Sie dann schrittweise Komplexität hinzu. Testen Sie bei jedem Schritt.
- Verwenden Sie Zeichenklassen: [a-z] ist klarer als (a|b|c|...|z). Benannte Klassen wie \d, \w und \s verbessern die Lesbarkeit.
- Bevorzugen Sie lazy Quantoren: Verwenden Sie *? und +? anstelle von * und +, wenn Sie die kürzeste Übereinstimmung benötigen, um übermäßige gierige Treffer zu vermeiden.
- Verwenden Sie Anker: Nutzen Sie bei Validierungsmustern immer ^ und $, um sicherzustellen, dass die gesamte Zeichenkette übereinstimmt, nicht nur ein Teilstring.
- Vermeiden Sie katastrophales Backtracking: Verschachtelte Quantoren wie (a+)+ können bei bestimmten Eingaben zu exponentieller Zeitkomplexität führen. Verwenden Sie atomare Gruppen oder possessive Quantoren, wenn verfügbar.
- Kommentieren Sie komplexe Muster: Verwenden Sie das x-Flag (verbose mode), um komplexen Mustern Leerzeichen und Kommentare hinzuzufügen.
Möchten Sie diese Regex-Muster interaktiv testen? Probieren Sie unser kostenloses Regex-Testtool mit Echtzeit-Erkennung, Visualisierung von Erfassungsgruppen und Mustererklärung.
Regex testenHäufig gestellte Fragen
Was sind reguläre Ausdrücke?
Ein regulärer Ausdruck ist eine Zeichenfolge, die ein Suchmuster definiert. Er wird für Zeichenkettenabgleich, Validierung, Suchen-und-Ersetzen-Operationen und Textanalyse verwendet. Regex-Muster verwenden spezielle Metazeichen wie ., *, +, ?, [], () und {}, um flexible Abgleichregeln zu definieren.
Sollte ich E-Mails mit regulären Ausdrücken validieren?
Verwenden Sie reguläre Ausdrücke für die grundlegende E-Mail-Formatvalidierung (Prüfung des @-Zeichens, der Domainstruktur), aber versuchen Sie nicht, E-Mail-Adressen ausschließlich mit Regex vollständig zu validieren. Die E-Mail-Spezifikation (RFC 5322) ist äußerst komplex, und kein regulärer Ausdruck kann alle gültigen Adressen perfekt validieren. In Produktionsumgebungen sollten Sie die grundlegende Regex-Validierung mit einer tatsächlichen E-Mail-Validierung (Senden eines Bestätigungslinks) kombinieren.
Was ist der Unterschied zwischen gierigen und lazy Quantoren?
Gierige Quantoren (*, +) gleichen so viel Text wie möglich ab, während lazy Quantoren (*?, +?) so wenig Text wie möglich abgleichen. Zum Beispiel, angewandt auf 'aabb', gleicht das gierige Muster a.*b 'aabb' (die gesamte Zeichenkette) ab, während das lazy Muster a.*?b nur 'aab' (die kürzeste Übereinstimmung) abgleicht.
Wie teste ich reguläre Ausdrücke?
Testen Sie Muster interaktiv mit Online-Regex-Testtools (wie dem ToolHub Regex-Tester). Diese Tools heben Treffer in Echtzeit hervor, zeigen Erfassungsgruppen an und erklären die Funktion der einzelnen Musterteile.
Sind reguläre Ausdrücke in verschiedenen Programmiersprachen gleich?
Der größte Teil der Regex-Syntax ist sprachübergreifend gleich, aber bei erweiterten Funktionen gibt es Unterschiede. JavaScript unterstützt keine Lookbehind-Assertions in älteren Engines, Python verwendet eine andere Syntax für benannte Gruppen als JavaScript, und PCRE (PHP) unterstützt mehr Funktionen als die meisten anderen Engines. Testen Sie Muster immer in der Zielsprache.