Regex-Tester
Gib ein Muster für einen regulären Ausdruck und eine Teststring ein, um Übereinstimmungen hervorzuheben und die Werte der Erfassungsgruppen aufzulisten. Unterstützt die Flags g/i/m/s/u mit dem nativen RegExp von JavaScript.
Häufig genutzte Regex-Muster
| Verwendung | Muster | Beschreibung |
|---|---|---|
| E-Mail-Adresse | ^[\w.+-]+@[\w-]+\.[\w.-]+$ | Passt auf ein vereinfachtes E-Mail-Format aus Benutzername und Domain, getrennt durch @ (nicht vollständig RFC-konform). |
| Telefonnummer (Deutschland) | ^0\d{2,5}[\s/-]?\d{3,10}$ | Passt auf deutsche Fest- oder Mobilfunknummern, die mit 0 beginnen, mit optionalem Trennzeichen zwischen Vorwahl und Nummer. |
| URL | https?:\/\/[\w.-]+(?:\/[\w\-./?%&=]*)? | Extrahiert URL-Strings, die mit http:// oder https:// beginnen, einschließlich Pfad und Query-Parametern. |
| Postleitzahl (PLZ) | ^\d{5}$ | Passt auf eine fünfstellige deutsche Postleitzahl (PLZ). |
| Hex-Farbcode | ^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$ | Passt auf CSS-Hex-Farben im vollen Format #RRGGBB oder in der Kurzform #RGB. |
| Nur Ziffern | ^[0-9]+$ | Prüft, ob der gesamte String nur aus Ziffern (0-9) besteht. |
Tipps
- Das
/Flags-Feld neben dem Musterfeld zeigt auf einen Blick, welche Flag-Kombination gerade aktiv ist. - Nur die in
()eingeschlossenen Teile zählen als Erfassungsgruppen. Verwende eine nicht erfassende Gruppe(?:...), wenn du nur eine Bedingung gruppieren möchtest, ohne die Gruppenliste unnötig zu füllen. - Ohne das g-Flag wird nur die erste Übereinstimmung gefunden. Aktiviere es, wenn du alle Vorkommen im Text zählen möchtest.
- Die Schaltfläche "Beispiel einfügen" lädt ein Beispiel zur E-Mail-Extraktion – ein guter Ausgangspunkt, um das Verhalten von Erfassungsgruppen zu verstehen.
- Die gesamte Verarbeitung findet vollständig in deinem Browser statt – das eingegebene Muster und der Teststring werden nie an einen Server gesendet.
Häufig gestellte Fragen
[abc], \d, +, * usw.) ist größtenteils identisch, aber die Syntax benannter Gruppen, die Unterstützung von Lookahead/Lookbehind und die verfügbaren Flags unterscheiden sich zwischen den Sprachen im Detail. Dieses Tool folgt der RegExp-Spezifikation von JavaScript und garantiert daher kein identisches Verhalten in anderen Sprachen.*, +, ?) ohne vorangehendes Element oder eine ungültige Zeichenklasse. Die Fehlermeldung gibt meist einen Hinweis, also prüfe die Klammerbalance und das Escaping von Sonderzeichen (wie \. oder \().
Übrigens – Was in einer Regex-Engine im Inneren passiert
Reguläre Ausdrücke gehen auf die Theorie der "regulären Sprachen" zurück, die der Mathematiker Stephen Kleene in den 1950er-Jahren aufstellte. Frühe Unix-Werkzeuge wie der Texteditor ed und der Befehl grep (kurz für "globally search a Regular Expression and Print") übernahmen diese Theorie als praktische Implementierung, was die schnelle Verbreitung des Konzepts in Textverarbeitungswerkzeugen erklärt. Der Name "grep" selbst stammt symbolträchtig von einer Regex-Operation.
Die RegExp-Engine von JavaScript führt den Abgleich intern mit einer Strategie namens Backtracking durch: Sie probiert jedes Element des Musters der Reihe nach und geht bei einem späteren Fehlschlag einen Schritt zurück, um eine Alternative zu versuchen. Diese Flexibilität hat einen Nachteil: Muster wie (a+)+b in Kombination mit einem langen, nicht passenden String können die Anzahl der Versuche exponentiell wachsen lassen – ein Phänomen namens "katastrophales Backtracking", das einen Browser oder Server zum Einfrieren bringen kann. Teste komplexe Muster deshalb immer mit verschiedenen Eingaben, bevor du sie im Produktivbetrieb einsetzt.
Ein Regex-Objekt mit dem globalen (g) Flag speichert intern einen Cursor namens lastIndex, und jeder Aufruf von exec() setzt die Suche ab dieser Position fort. Die Wiederverwendung desselben Regex-Objekts für nicht zusammenhängende Suchen kann diesen Cursor in einem unerwarteten Zustand hinterlassen. Deshalb erzeugt dieses Tool jedes Mal eine neue RegExp-Instanz, um zu verhindern, dass ein solcher Restzustand übernommen wird.
Benannte Erfassungsgruppen ((?<name>...)) wurden in ECMAScript 2018 eingeführt und sind ein relativ neues Feature. Eine Gruppe über ihren Namen statt über ihre Nummer anzusprechen, verbessert die Lesbarkeit komplexer Muster erheblich – besonders nützlich beim Parsen von Datumsangaben, wo es wichtig ist zu wissen, wofür jede Gruppe steht.