Was ein Regex Tester macht
Ein regulärer Ausdruck, kurz Regex, ist eine kleine Mustersprache zum Finden von Text. \d{4} bedeutet „vier Ziffern hintereinander“. [\w.+-]+@ bedeutet „ein oder mehrere Wortzeichen, Punkte, Pluszeichen oder Bindestriche, gefolgt von einem @“. Regex wird für Suchen und Ersetzen in Code-Editoren, für die Prüfung von Formularen, die Auswertung von Logs und das Bereinigen von Daten verwendet.
Muster sind leicht ein wenig falsch. Mit einem Tester probierst du ein Muster an echtem Beispieltext aus und siehst genau, was es erfasst, bevor du es in ein Skript einbaust. Dieser hier zeigt Treffer beim Tippen, listet jede Capture Group auf und zeigt eine Vorschau der Ersetzung.
So nutzt du den Regex Tester
- Tippe dein Muster in Regulärer Ausdruck. Lass die Schrägstriche weg. Das Tool zeigt sie für dich an, mit den aktiven Flags nach dem schließenden Schrägstrich.
- Schalte Flags mit den Schaltflächen g, i, m, s, u und y ein oder aus.
- Füge Beispieltext in Testtext ein oder tippe ihn.
- Lies das Ergebnis unter Treffer. Jeder Treffer ist markiert, und der Zähler zeigt, wie viele gefunden wurden.
- Schau unter Trefferdetails und Gruppen nach der Position jedes Treffers und dem Text, den jede Gruppe erfasst hat.
- Um Suchen und Ersetzen zu testen, tippe in Ersetzen durch. Der geänderte Text erscheint unter Ergebnis, bereit zum Kopieren.
Du weißt nicht, wo du anfangen sollst? Wähl einen Eintrag aus Häufige Muster. Es gibt Muster für E-Mail-Adressen, Webadressen, Datumsangaben, IPv4-Adressen, Hex-Farben, Telefonnummern, Zahlen und doppelte Leerzeichen.
Die Flags
| Flag | Name | Was es ändert |
|---|---|---|
| g | global | Findet jeden Treffer, nicht nur den ersten |
| i | ignore case | hello passt auch auf Hello und HELLO |
| m | multiline | ^ und $ passen auf Anfang und Ende jeder Zeile |
| s | dot all | . passt auch auf einen Zeilenumbruch |
| u | unicode | Liest Emojis als ein Zeichen und erlaubt Klassen wie \p{...} |
| y | sticky | Jeder Treffer muss genau dort beginnen, wo der letzte endete |
Beispiele
Diese Ergebnisse stammen aus den Mustern in diesem Tool.
| Muster | Flags | Text | Treffer |
|---|---|---|---|
\d+ |
keine | a1 b22 c333 |
1 |
\d+ |
g | a1 b22 c333 |
1, 22, 333 |
hello |
gi | Hello hello HELLO |
Hello, hello, HELLO |
^\w+ |
gm | zwei Zeilen: one two und three four |
one, three |
a.b |
g | a, Zeilenumbruch, b |
kein Treffer |
a.b |
gs | a, Zeilenumbruch, b |
ein Treffer |
Die Seite lädt mit einem Beispiel für Datumsangaben. Das Muster (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) findet im Beispieltext drei Daten: 2026-10-31, 2024-01-15 und 2026-11-02. Die Ersetzung $<day>/$<month>/$<year> macht aus dem ersten 31/10/2026. Für das deutsche Datumsformat nimmst du als Ersetzung $<day>.$<month>.$<year> und bekommst 31.10.2026.
Eine Ersetzung hilft auch beim Aufräumen. Das Muster \s{2,} mit einem einzelnen Leerzeichen als Ersetzung macht aus too many spaces den Text too many spaces.
Umlaute und ß in regulären Ausdrücken
Für deutsche Texte ist ein Detail besonders wichtig: In JavaScript passt \w nur auf A bis Z, a bis z, Ziffern und den Unterstrich. Umlaute und ß gehören nicht dazu. Das Muster \w+ mit Flag g findet in „Die Größe der Straße“ deshalb Die, Gr, e, der, Stra und e. Ganze deutsche Wörter erwischst du mit \p{L}+ und den Flags g und u: Dann kommen Die, Größe, der und Straße heraus. Dasselbe gilt für \b, das Wortgrenzen ebenfalls nach dem ASCII-Verständnis setzt.
Deutsche Datumsangaben im Format TT.MM.JJJJ findest du mit \d{2}\.\d{2}\.\d{4}. Der Punkt muss escaped werden, sonst passt er auf jedes Zeichen.
So funktioniert es
Der Tester baut aus deinem Muster und den Flags ein JavaScript-RegExp und lässt es über den Testtext laufen. Mit dem Flag g sucht er bis zum Ende weiter. Er springt auch über leere Treffer hinweg, damit ein Muster wie x* keine Endlosschleife erzeugt.
Der Text wird escaped, bevor er markiert wird. HTML oder Skripte in deinem Beispieltext werden als normale Zeichen angezeigt und nie ausgeführt.
Die Suche läuft in einem Web Worker, einem Hintergrund-Thread. Läuft ein Muster länger als 1 Sekunde, wird der Worker gestoppt und ein neuer gestartet. Du siehst eine Meldung statt eines eingefrorenen Tabs.
Ist ein Muster ungültig, bekommst du die Fehlermeldung des Browsers. Ein einzelnes ( ergibt zum Beispiel „Unterminated group“. Diese Meldungen stammen vom Browser und können je nach Browser auch auf Englisch erscheinen.
Tipps und Grenzen
- Vorsicht bei verschachtelten Wiederholungen. Muster wie
(a+)+$oder(\w+\s?)*$können bei Text, der fast passt, enorm lange brauchen. Das nennt man katastrophales Backtracking. Lass jeden Teil auf etwas Bestimmtes passen und vermeide eine Wiederholung innerhalb einer Wiederholung. - Escape Sonderzeichen. Um einen echten Punkt zu finden, schreib
\.. Dasselbe gilt für? * + ( ) [ ] { } ^ $ |und den Backslash selbst. - Verankere Muster zur Validierung. Für ein Formularfeld setzt du das Muster zwischen
^und$, damit der ganze Wert passen muss, nicht nur ein Teil davon. - Regex ist kein vollständiger Parser. Für das Finden von E-Mails oder Daten in Text ist es gut. Um HTML zu parsen oder zu prüfen, ob eine E-Mail-Adresse wirklich existiert, ist es kein zuverlässiger Weg.
- Sehr große Ergebnisse werden begrenzt. Das Tool listet bis zu 5.000 Treffer und zeigt die ersten 300 Zeilen in der Detailtabelle.
Andere Wege, einen Regex zu testen
Auf der Kommandozeile gibt grep -oE jeden Treffer in einer eigenen Zeile aus:
echo 'Call 555-010-9999 on 2026-10-31' | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
Das gibt 2026-10-31 aus. In Python liefert re.findall(r'\d{4}-\d{2}-\d{2}', 'from 2026-10-31 to 2024-01-15') das Ergebnis ['2026-10-31', '2024-01-15']. Anders als JavaScript zählt Python bei \w in normalen Strings übrigens auch Umlaute mit. In JavaScript nimmst du text.match(/pattern/g) oder text.matchAll() für Gruppen.
Ähnliche Tools
Um Titel für Webadressen aufzuräumen, nimm den URL Slug Generator. Um Text in einem Link sicher zu machen, nimm URL kodieren und dekodieren.