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.pattern
tools.regexTester.enterPattern
//

tools.regexTester.flags

tools.regexTester.testString
tools.regexTester.enterTestString
Testen und debuggen Sie Ihre regulären Ausdrücke

Character Classes

  • . Any character
  • \d Digit (0-9)
  • \w Word character
  • \s Whitespace

Quantifiers

  • * 0 or more
  • + 1 or more
  • ? 0 or 1
  • {n,m} n to m times

Anchors

  • ^ Start of line
  • $ End of line
  • \b Word boundary
  • \B Non-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

  1. Regex-Muster eingeben — keine Begrenzer nötig (nur das Muster, nicht /pattern/).
  2. Flags setzen: g (alle Treffer), i (Groß-/Kleinschreibung ignorieren), m (mehrzeilig), s (Punkt passt auf Zeilenumbruch).
  3. Teststring einfügen. Treffer werden in Echtzeit hervorgehoben.
  4. 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

1.

Sonderzeichen escapen

In Regex haben . * + ? ^ $ { } [ ] ( ) | \ alle eine besondere Bedeutung. Um einen wörtlichen Punkt zu finden, verwende \. — nicht nur einen Punkt.

2.

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.

3.

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.

4.

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,}

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.