Alle Tools laufen in deinem Browser — deine Dateien verlassen nie dein Gerät.
All tools154

Entwicklung

Regex-Tester

Muster live testen, mit Treffermarkierung und Gruppentabelle.

Was es macht. Ein Regex-Tester prüft einen regulären Ausdruck gegen Testtext und markiert die Treffer, während du tippst. Dieses Werkzeug zeigt zusätzlich alle Fangruppen in einer Tabelle und kann eine Ersetzung als Vorschau darstellen. Es nutzt die Regex-Engine deines Browsers, sodass das Verhalten dem in JavaScript entspricht.
Läuft im BrowserKein UploadKeine AnmeldungFunktioniert offline

So benutzt du Regex-Tester

  1. Gib dein Muster ein und setz die Schalter — g für global, i für Groß-/Kleinschreibung, m für mehrzeilig.
  2. Füg darunter den Testtext ein. Treffer werden in beiden Feldern beim Tippen markiert.
  3. Lies die Tabelle der Fangruppen oder wechsel in den Ersetzungsmodus.

Umlaute, ß und \w

Das ist die deutsche Stolperfalle, und sie ist still: Muster funktionieren scheinbar, bis ein Umlaut auftaucht.

Die Zeichenklasse \w steht in JavaScript standardmäßig für [A-Za-z0-9_] — ohne ä, ö, ü und ß. Ein Muster wie ^\w+$ trifft „Meier", aber nicht „Müller". Ebenso findet [a-z]+ keine Umlaute.

Zwei Auswege. Der eine ist die ausdrückliche Erweiterung: [A-Za-zÄÖÜäöüß]. Der andere, sauberere ist der Unicode-Modus mit dem Schalter u und Eigenschaftsklassen: \p{L} für jeden Buchstaben in jeder Schrift, \p{Lu} für Großbuchstaben.

/^\p{L}+$/u trifft „Müller", „Ångström" und „Ćwiek" gleichermaßen — und ist damit die richtige Wahl für alles, was mit echten Namen zu tun hat.

Was die Schalter tun

Die Schalter ändern das Verhalten grundlegend und werden oft falsch kombiniert.

Was die Schalter tun
SchalterWirkung
gFindet alle Treffer statt nur den ersten
iIgnoriert Groß- und Kleinschreibung
m^ und $ gelten je Zeile statt für den ganzen Text
sDer Punkt trifft auch Zeilenumbrüche
uUnicode-Modus, nötig für \p{...} und Zeichen außerhalb der BMP
ySucht nur genau ab der aktuellen Position

Ein häufiges Missverständnis betrifft m und s: m ändert nur, wo ^ und $ greifen, nicht was der Punkt trifft. Wer über mehrere Zeilen hinweg suchen will, braucht s.

Gierig, genügsam und katastrophal

Quantoren sind standardmäßig gierig: .* nimmt so viel wie möglich und gibt nur zurück, soweit nötig. Mit angehängtem Fragezeichen werden sie genügsam und nehmen so wenig wie möglich.

Auf <b>fett</b> und <b>dick</b> trifft <b>.*</b> alles von der ersten bis zur letzten Marke. <b>.*?</b> trifft die beiden Abschnitte einzeln.

Gefährlich wird es bei verschachtelten Quantoren wie (a+)+b. Bei einer nicht passenden Eingabe probiert die Engine exponentiell viele Aufteilungen durch — bei dreißig Zeichen kann das Minuten dauern und den Tab einfrieren. Wer Muster aus Benutzereingaben zusammensetzt, öffnet damit eine Angriffsfläche.

Häufige Fragen

Warum findet mein Muster keine Umlaute?

Weil \w und [a-z] nur ASCII abdecken. Nimm den Schalter u und \p{L}, oder ergänze ÄÖÜäöüß ausdrücklich.

Was ist der Unterschied zwischen m und s?

m lässt ^ und $ je Zeile greifen. s lässt den Punkt auch Zeilenumbrüche treffen. Zwei verschiedene Dinge.

Was heißt gierig?

Ein Quantor nimmt so viel wie möglich. Mit angehängtem ? wird er genügsam und nimmt so wenig wie möglich.

Gilt das auch für Python oder PHP?

Weitgehend, aber nicht überall. Diese Engine ist die von JavaScript; Lookbehind und Eigenschaftsklassen verhalten sich anderswo teils anders.

Warum hängt mein Muster?

Vermutlich katastrophales Backtracking durch verschachtelte Quantoren wie (a+)+. Vereinfache das Muster.

Wird mein Text gesendet?

Nein, alles läuft in diesem Tab.

Ratgeber zu Regex-Tester