Regex-Tester — Reguläre Ausdrücke Online Testen & Debuggen
Muster eingeben, Teststring einfügen, Treffer sofort hervorgehoben sehen. Erfassungsgruppen, Flags, Fehlermeldungen — alles live während du tippst. Verwendet die JavaScript-Regex-Engine (dieselbe wie dein Browser und Node.js). Nichts verlässt deinen Browser.
tools.regexTester.flags
Character Classes
.Any character\dDigit (0-9)\wWord character\sWhitespace
Quantifiers
*0 or more+1 or more?0 or 1{n,m}n to m times
Anchors
^Start of line$End of line\bWord boundary\BNon-word boundary
Reguläre Ausdrücke in 90 Sekunden
Eine Regex ist eine Minisprache zur Beschreibung von Textmustern. Das Muster \d{3}-\d{4} passt zu Telefonnummern wie "555-1234". Das Muster ^From:.+$ passt zu E-Mail-Kopfzeilen, die mit "From:" beginnen. Einfaches Konzept, aber die Syntax wird schnell dicht.
JavaScript verwendet die ECMAScript-Regex-Variante (definiert in ECMA-262). Hauptunterschiede zu anderen Varianten: kein Lookbehind in älteren Engines (hinzugefügt in ES2018), keine possessiven Quantoren, keine atomaren Gruppen. Wenn du eine Regex aus Python oder PCRE portierst, achte auf diese Lücken.
Der häufigste Fehler den ich sehe: vergessen, dass . standardmäßig nicht mit Zeilenumbrüchen übereinstimmt. Wenn dein Teststring Zeilenumbrüche enthält und dein Muster .* verwendet, bekommst du unerwartete Teiltreffer. Füge das s-Flag (dotAll) hinzu oder verwende stattdessen [\s\S]*.
Leistungsfalle: Verschachtelte Quantifizierer wie (a+)+ oder (.*a){20} können zu katastrophalem Backtracking führen — die Engine versucht exponentiell viele Pfade. Eine 30-Zeichen-Eingabe kann deinen Browser minutenlang blockieren. Dieses Tool läuft in deinem Browser, also friert ein schlechtes Muster nur diesen Tab ein, nicht einen Produktionsserver. Zuerst hier testen.
Anleitung
- Regex-Muster eingeben — keine Begrenzer nötig (nur das Muster, nicht /pattern/).
- Flags setzen: g (alle Treffer), i (Groß-/Kleinschreibung ignorieren), m (mehrzeilig), s (Punkt passt auf Zeilenumbruch).
- Teststring einfügen. Treffer werden in Echtzeit hervorgehoben.
- Erfassungsgruppen unten prüfen — jede () Gruppe zeigt ihren Inhalt separat.
Wann Du Das Brauchst
Benutzereingabeformate validieren
E-Mail, Telefonnummer, Postleitzahl, Kreditkarte — alle haben Muster. Regex hier erstellen und testen, bevor du sie in deinen Validierungscode einfügst.
Daten aus Logdateien extrahieren
Serverprotokolle, CSV-Dateien, API-Antworten — wenn du Zeitstempel, IPs oder Fehlercodes aus unstrukturiertem Text extrahieren musst. Muster mit Erfassungsgruppen erstellen, gegen eine Beispiel-Logzeile testen, dann im Skript verwenden.
Suchen und Ersetzen in Code-Editoren
VS Code, IntelliJ, Sublime — alle unterstützen Regex-Suchen-und-Ersetzen. Muster hier mit Testfällen erstellen, dann in den Editor einfügen. Besonders nützlich beim Refactoring.
Eine Regex debuggen die "funktionieren sollte aber nicht funktioniert"
Du hast ein Muster geschrieben, es funktioniert für manche Eingaben aber nicht für andere. Die fehlschlagende Eingabe hier einfügen, genau sehen wo der Treffer abbricht. Meist ist es ein fehlender Escape (\. vs .), ein greedy vs lazy Quantor (.* vs .*?), oder ein fehlendes Flag.
Häufige Fallstricke
Sonderzeichen escapen
In Regex haben . * + ? ^ $ { } [ ] ( ) | \ alle eine besondere Bedeutung. Um einen wörtlichen Punkt zu finden, verwende \. — nicht nur einen Punkt.
Greedy vs lazy: .* vs .*?
.* greift so viel wie möglich (gierig), .*? greift so wenig wie möglich (faul). Im Zweifelsfall lazy mit .*? verwenden und Spezifität hinzufügen.
Anker sind wichtig: ^ und $ mit mehrzeiligem Flag
Ohne m-Flag passt ^ nur auf den Anfang des gesamten Strings und $ nur auf das Ende. Mit m-Flag passen sie auf Anfang/Ende jeder Zeile. Wenn du mehrzeiligen Text verarbeitest und dein Muster ^ verwendet, brauchst du wahrscheinlich das m-Flag.
Katastrophales Backtracking vermeiden
Muster wie (a+)+ oder (x+x+)+y können bei nicht-passenden Eingaben exponentielle Zeit benötigen. Niemals Quantoren auf sich überschneidenden Zeichenklassen verschachteln.
Beispiele
Datumskomponenten extrahieren
Jahr, Monat, Tag aus ISO-Datumsformat mit nummerierten Gruppen erfassen.
Input
(\d{4})-(\d{2})-(\d{2})Output
Eingabe "2024-03-15" → Gruppe 1: "2024", Gruppe 2: "03", Gruppe 3: "15"E-Mail-Muster abgleichen
Ein vereinfachtes E-Mail-Muster (nicht RFC 5322 konform, aber erkennt offensichtliche Nicht-E-Mails).
Input
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}Output
Passt auf "[email protected]", "[email protected]"Funktionen
- Echtzeit-Matching — Ergebnisse aktualisieren sich beim Tippen, kein Absende-Button
- Alle JavaScript-Flags: g, i, m, s, u, v, y
- Nummerierte Erfassungsgruppen-Anzeige
- Syntaxfehler-Hervorhebung mit beschreibenden Meldungen
- Trefferzähler und Positionsanzeigen
- Läuft 100% im Browser — Daten werden nirgendwohin gesendet
Häufig Gestellte Fragen
Warum funktioniert meine Regex in Python aber nicht hier?
Unterschiedliche Regex-Varianten. Python verwendet PCRE-ähnliche Syntax mit Funktionen die JavaScript fehlen: Lookbehind (hinzugefügt in ES2018, nicht in älteren Browsern), atomare Gruppen, possessive Quantoren (a++), Verbose-Modus (x-Flag). Häufigstes Problem: Pythons re.DOTALL ist JavaScripts s-Flag.
Wie matche ich über mehrere Zeilen hinweg?
Zwei Optionen: (1) s-Flag hinzufügen — macht dass . auf Zeilenumbruchzeichen passt. (2) [\s\S] statt . verwenden — passt auf jedes Zeichen einschließlich Zeilenumbrüche ohne s-Flag. Für zeilenweises Matching m-Flag verwenden, damit ^ und $ auf Zeilengrenzen passen.
Was ist der Unterschied zwischen (?: ) und ( )?
( ) ist eine Erfassungsgruppe — erfasst den passenden Text für spätere Verwendung (Rückverweise, Extraktion). (?: ) ist eine nicht-erfassende Gruppe — gruppiert das Muster aber erfasst nicht. (?: ) verwenden wenn Gruppierung nötig aber der erfasste Wert nicht. Etwas schneller und hält die Gruppennummerierung sauber.
Warum friert meine Regex die Seite ein?
Katastrophales Backtracking. Muster mit verschachtelten Quantoren auf überlappenden Zeichen (wie (a*)*b oder (.+)+$) können bei nicht-passenden Eingaben exponentielle Zeit benötigen. Die Engine versucht jede mögliche Kombination bevor sie aufgibt. Lösung: Quantoren spezifischer machen oder umstrukturieren um Verschachtelung auf denselben Zeichen zu vermeiden.
Wie matche ich Sonderzeichen wörtlich?
Mit Backslash escapen: \. für Punkt, \* für Sternchen, \( für Klammer, \\ für Backslash selbst. Innerhalb einer Zeichenklasse [ ] verlieren die meisten Sonderzeichen ihre Bedeutung außer ] \ ^ -. Im Zweifelsfall escapen — ein unnötiger Escape ist harmlos, ein fehlender ist ein Bug.
Tipps und verwandte Workflows
- Testen Sie Ihre Regex gegen JSON-Daten? Formatieren Sie sie zuerst mit unserem JSON-Formatierer.
- Müssen Sie übereinstimmenden Text zur Verifizierung hashen? Nutzen Sie unseren Hash-Generator.
- Kodieren Sie per Regex gefundene URLs sicher mit unserem URL-Encoder.
- Arbeiten Sie mit Base64-kodierten Zeichenketten in Ihrer Regex? Dekodieren Sie sie mit unserem Base64-Encoder.