Regex-Test
Regex-Test
Regex-Test unterstützt Echtzeit-Abgleich, Fanggruppen, benannte Gruppen und Ersetzungsvorschau und eignet sich für Musterprüfung, Textextraktion und Massenersetzungen.
/
/g
Globale Suche
Groß-/Kleinschr. ignorieren
Mehrzeilig
Punkt matcht Zeilenumbruch
Unicode-Modus
Ab aktueller Position
Testtext
Ersetzungstext
Übereinstimmungsergebnisse
Geben Sie ein Muster ein, um den Abgleich zu starten
Ersatzvorschau
Schnellstart
Häufige Anwendungsfälle
IDs, E-Mails, Datumswerte oder eigene Marker aus Logs, HTML-Quelltext oder Rohtext extrahieren.
Vor Code, Formularvalidierung oder Suchregeln prüfen, ob das Muster wirklich korrekt trifft.
Mit Capture Groups und benannten Gruppen Textstrukturen oder Feldinhalte stapelweise ersetzen.
Nutzungstipps
Einschränkungen und Kompatibilität
Datenschutz & Sicherheit
Häufige Fragen
Ein regulärer Ausdruck (Regex) ist eine Mustersprache zur Beschreibung von Textstrukturen. Betrachten Sie es als eine „erweiterte Suche“ – statt nach einem festen Wort zu suchen, suchen Sie nach allem, was einer Regel entspricht [\\w.]+@[\\w.]+ stimmt mit E-Mail-Adressen überein. Regex wird häufig verwendet für: Textsuche und -extraktion (Suchen von Fehlercodes in Protokollen), Formatvalidierung (Überprüfung von Telefonnummern) und Batch-Ersetzung (Konvertieren von Datumsformaten).\n\nFast jede Programmiersprache (JavaScript, Python, Java, Go usw.) und viele Tools (VS Code, grep, sed) unterstützen Regex mit größtenteils ähnlicher Syntax. Dieses Tool nutzt die JavaScript-RegExp-Engine für schnelles Online-Testen und Lernen.
JavaScript-Regex gibt standardmäßig nur die erste Übereinstimmung zurück – dies ist ein Verhalten der Sprachspezifikation, keine Toolbeschränkung. Klicken Sie in der Flaggenleiste auf die Schaltfläche „g“, um die globale Suche zu aktivieren und alle Übereinstimmungen anzuzeigen.\n\nBeachten Sie die Interaktion zwischen g und y: g durchsucht den gesamten Text von Anfang bis Ende, während y (sticky) erfordert, dass jede Übereinstimmung genau dort beginnt, wo die vorherige endete – wenn es Lückenzeichen zwischen Übereinstimmungen gibt, stoppt y bei der ersten Lücke. Normalerweise reicht es aus, nur g ohne y zu aktivieren.
Es gibt vier häufige Ursachen:\n\n1. Nicht übereinstimmende Klammern: every (muss ein Matching haben), every [muss ein Matching haben]. IDEs vervollständigen diese möglicherweise automatisch, dieses Tool erfordert jedoch eine manuelle Kopplung.\n2. Falsch platzierte Quantoren: Quantoren (*, +, ?, {n}) müssen einem quantifizierbaren Element folgen. Kombinationen wie *+ oder ?* sind illegal, es sei denn, der erste Quantor ist ? für verzögerte Modifikation (wie *?).\n3. Unvollständige Escapezeichen: Ein einzelnes \\ am Ende ist illegal – es muss ein bestimmtes Zeichen maskieren (wie \\d, \\n, \\\\).\n4. Unicode-Eigenschaften benötigen das u-Flag: \\p{L}, \\p{Script=Han} und ähnliche Unicode-Eigenschaften entkommen Fehlern, wenn das u-Flag nicht aktiviert ist. Klicken Sie auf die Schaltfläche u, um es zu aktivieren.
Dabei handelt es sich um Ersatzreferenztokens, die durch String.prototype.replace() von JavaScript definiert werden:\n\n- $1, $2, ..., $99: Verweisen auf den von der n-ten Erfassungsgruppe erfassten Inhalt (...)\n- $&: den gesamten übereinstimmenden Text\n- $`: den Text vor dem match\n- $': der Text nach dem Match\n- ${name}: der von der benannten Gruppe erfasste Inhalt (?<name>...)\n\nBeispiel: Muster (\\w+)\\s(\\w+) passend zu „hello world“ mit Ersetzung $2-$1 erzeugt „world-hello“. Um ein literales $ in die Ersetzung aufzunehmen, verwenden Sie $$, um es zu maskieren.
Timeouts werden fast immer durch „katastrophales Backtracking“ verursacht. Wenn die Regex-Engine auf verschachtelte Quantoren (wie (a+)+b) oder überlappende optionale Pfade stößt, durchläuft sie eine exponentielle Anzahl von Kombinationen, wodurch die Übereinstimmungszeit explodiert.\n\nTypische gefährliche Muster: (a+)+, (.*?)*, (.+)+$ usw. Lösungen:\n1. Ersetzen . mit präzisen Zeichenklassen, z.B. [^\\s]+ statt .+\n2. Vermeiden Sie verschachtelte Quantoren – ändern Sie (a+)+ in a+\n3. Reduzieren Sie überlappende optionale Pfade – ändern Sie (a|ab)+ in a+b?\n\nNachdem Sie das Muster angepasst haben, klicken Sie im Bereich der Übereinstimmungsergebnisse auf die Schaltfläche „Wiederholen“. Das Tool verfügt über einen 4-Sekunden-Timeout-Schutz und friert Ihren Browser nicht ein.
Verschiedene Sprachen weisen in drei Hauptbereichen Unterschiede in der Regex-Engine auf:\n\n1. Die Syntaxunterstützung variiert: JavaScript unterstützt keine rekursiven PCRE-Muster (?R), bedingte Verzweigungen (?(cond)yes|no) oder atomare Gruppen (?>...). Dem re-Modul von Python fehlen diese ebenfalls, das Regex-Modul unterstützt sie jedoch. Java unterstützt atomare Gruppen, jedoch keine Rekursion.\n2. Die Unicode-Verarbeitung unterscheidet sich: Python 3 verarbeitet \\w, \\d standardmäßig als Unicode; JavaScript verwendet standardmäßig ASCII – Sie müssen das u-Flag manuell aktivieren. Dies bedeutet, dass \\w nicht mit chinesischen Zeichen übereinstimmt und dass Wortgrenzen zwischen \\b nicht zwischen CJK-Zeichen gelten.\n3. Die Newline-Semantik unterscheidet sich: Pythons . stimmt standardmäßig nicht mit \\n überein (dasselbe wie JavaScript), während sich Pattern.DOTALL von Java genauso verhält wie das s-Flag von JavaScript.\n\nEmpfehlung: Verwenden Sie dieses Tool für eine schnelle Logiküberprüfung und führen Sie dann eine abschließende Bestätigung mit der Engine Ihrer Zielsprache durch.