Reguläre Ausdrücke gelten als kryptisch, aber 90 % der realen Nutzung reduziert sich auf eine Handvoll Muster, die in jedem Projekt wiederkehren: eine E-Mail validieren, eine URL extrahieren, doppelte Leerzeichen bereinigen. Der Rest ist Googeln, wenn der seltene Sonderfall auftaucht.
Testen, bevor du es in Produktion schickst
Bevor du eine Regex in deinen Code einbaust, teste sie an mehreren echten Fällen — auch solchen, die nicht matchen sollten — im Regex-Tester. Er hebt jeden Treffer und jede erfasste Gruppe hervor, sodass du sofort siehst, ob das Muster zu locker oder zu streng ist.
Die Muster, die du immer brauchst
- E-Mail (Basisvalidierung):
^[^\s@]+@[^\s@]+\.[^\s@]+$— deckt nicht 100 % des RFC ab, reicht aber für Formulare. - Nur Ziffern:
^\d+$ - Doppelte Leerzeichen:
\s{2,}— nützlich zum Bereinigen von aus PDF oder Word eingefügtem Text. - URL mit Protokoll:
^https?:\/\/[^\s]+$ - ISO-Datum (YYYY-MM-DD):
^\d{4}-\d{2}-\d{2}$ - Slug (Kleinbuchstaben und Bindestriche):
^[a-z0-9]+(-[a-z0-9]+)*$
Die häufigsten Fehler
- Den Punkt nicht escapen.
.bedeutet "beliebiges Zeichen", kein wörtlicher Punkt. Für eine Domain ist es\., nicht. - Standardmäßig gierig.
<.+>gegen<b>fett</b>matcht vom ersten<bis zum letzten>, nicht nur ein Tag. Nutze den faulen Quantor<.+?>, um beim ersten schließenden Tag zu stoppen. - Das Muster nicht verankern. Ohne
^und$kann deine Regex nur einen Teil der Zeichenkette matchen und davor oder danach Müll durchlassen. [abc]mit(abc)verwechseln. Ersteres heißt "einer dieser drei Buchstaben", Letzteres "die exakte Sequenz abc" als Gruppe.
Benannte Gruppen, dein bester Freund
Wenn du mehrere Werte aus einer Zeichenkette extrahierst (Teile einer URL, ein Datum), nutze benannte Gruppen statt sie nach Position zu zählen: (?<jahr>\d{4})-(?<monat>\d{2})-(?<tag>\d{2}). Der Code, der das Ergebnis verarbeitet, wird dadurch viel lesbarer als match[1], match[2], match[3].
Kurz gesagt: Muster schreiben, an echten Grenzfällen testen, und erst dann in den Code einfügen.

