Reguläre Ausdrücke sind eine der wenigen Fähigkeiten, die in jeder Sprache und jedem Editor funktionieren – und eine der wenigen, die man alle sechs Monate wieder nachschlagen muss. Dieser Spickzettel erklärt jedes Token in einem Satz, gibt ein Beispiel dazu und endet mit den Mustern, die im Alltag am häufigsten gebraucht werden. Alle Beispiele können Sie direkt in den Regex-Tester einfügen.
Regex-Grundbausteine
| Token | Bedeutung | Beispiel |
|---|---|---|
. | Beliebiges Zeichen außer Zeilenumbruch | a.c trifft „abc“, „a1c“ |
d w s | Ziffer, Wortzeichen (a–z, 0–9, _), Leerraum | ddd trifft „123“ |
D W S | Das jeweilige Gegenteil | D+ trifft „abc“ |
b | Wortgrenze | bistb trifft „ist“, nicht „Liste“ |
^ $ | Anfang / Ende (der Zeile mit Flag m) | ^Hallo |
| Sonderzeichen entwerten | . trifft einen echten Punkt |
Zeichenklassen
[abc]eines der Zeichen a, b, c[^abc]jedes Zeichen außer a, b, c[a-z],[0-9],[A-Za-zÄÖÜäöüß]Bereiche – Umlaute müssen explizit hinein- Innerhalb von Klammern verlieren die meisten Sonderzeichen ihre Bedeutung:
[.]ist ein echter Punkt
Quantoren
| Token | Bedeutung |
|---|---|
* | 0 oder mehr |
+ | 1 oder mehr |
? | 0 oder 1 |
{3} {2,5} {2,} | genau 3, 2 bis 5, mindestens 2 |
*? +? ?? | „faul“: so wenig wie möglich |
Der Klassiker: <.+> auf „<b>fett</b>“ trifft den ganzen String, weil + gierig ist. <.+?> trifft nur „<b>“.
Gruppen
(abc)Fanggruppe – der Treffer steht als $1, $2 … zur Verfügung(?:abc)nicht fangende Gruppe – nur zum Gruppieren, schneller(?<jahr>d{4})benannte Gruppe – im Ersatz als $<jahr>a|bAlternative: „a oder b“; Klammern setzen, um die Reichweite zu begrenzen:gr(a|ü)n1Rückverweis:(w)1trifft Doppelbuchstaben wie „ll“
Lookarounds
| Token | Bedeutung | Beispiel |
|---|---|---|
(?=x) | gefolgt von x (nicht Teil des Treffers) | d+(?= €) trifft „49“ in „49 €“ |
(?!x) | nicht gefolgt von x | bfoo(?!bar) |
(?<=x) | vorangestellt x | (?<=€)d+ |
(?<!x) | nicht vorangestellt x | (?<!d)d{4}(?!d) – genau vier Ziffern |
Flags
- g alle Treffer statt nur den ersten
- i Groß-/Kleinschreibung ignorieren
- m ^ und $ gelten pro Zeile
- s . trifft auch Zeilenumbrüche
- u Unicode – nötig für Emojis und p{L}
- y „sticky“: nur an der aktuellen Position
Die zehn Muster, die man ständig braucht
- E-Mail (pragmatisch):
^[w.+-]+@[w-]+.[w.-]+$ - URL:
https?://[^s/$.?#].[^s]* - Datum TT.MM.JJJJ:
^(0[1-9]|[12]d|3[01]).(0[1-9]|1[0-2]).d{4}$ - ISO-Datum:
^d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])$ - IPv4:
^((25[0-5]|2[0-4]d|1?d?d).){3}(25[0-5]|2[0-4]d|1?d?d)$ - Deutsche PLZ:
^d{5}$ - Telefon (locker):
^+?[ds()/-]{7,}$ - Hex-Farbe:
^#([0-9a-fA-F]{3}){1,2}$ - Whitespace trimmen:
^s+|s+$→ ersetzen durch nichts - Doppelte Leerzeichen:
{2,}→ ersetzen durch ein Leerzeichen
Drei Fehler, die jeder macht
- Gierige Quantoren bei HTML oder Anführungszeichen –
+?verwenden. - Punkt nicht entwertet:
example.comtrifft auch „exampleXcom“. - g-Flag vergessen und sich wundern, warum nur der erste Treffer ersetzt wird.
Ersetzen mit Gruppen
Muster (w+)@(w+).de, Ersatz $2:$1 macht aus „max@firma.de“ ein „firma:max“. Benannte Gruppen: $<name>. Der komplette Treffer ist $&.
Jetzt ausprobieren: Regex-Tester
Tool öffnen →Kostenlos, läuft im Browser, nichts wird hochgeladen, keine Anmeldung.
Weiterlesen
Mehr aus Entwickler- & Code-Tools.

Code formatieren: HTML, CSS und JavaScript, das man nicht selbst geschrieben hat – und den eigenen konsistent haltenEntwickler- & Code-Tools

JSON formatieren, validieren und Fehler finden: die 6 Ursachen für „Unexpected token“Entwickler- & Code-Tools

CSS und JavaScript minimieren: Was es spart, wann es Dinge kaputt macht und wie man es sicher machtEntwickler- & Code-Tools