RevealTheme logo

Tester für reguläre Ausdrücke

Testet reguläre Ausdrücke von JavaScript gegen beliebige Eingaben. Sehen Sie Treffer, Gruppen und Ersetzungen in Echtzeit.

0 Treffer

So verwenden Sie dieses Tool

  1. 1

    Type your regular expression into the pattern field (no slashes — enter the bare pattern).

  2. 2

    Set the flags in the small field beside it, such as g, i, m, or a combination like gi.

  3. 3

    Paste or type the text you want to search into the large input box below.

  4. 4

    Read the match count and each matched substring with its character index in the results panel; an invalid pattern shows the engine's error message instead.

Was sind reguläre Ausdrücke und wie liest man sie?

Reguläre Ausdrücke (Regex) sind eine kleine domänenspezifische Sprache zum Suchen von Mustern in Text. Jede moderne Programmiersprache verfügt über eine Regex-Engine; dieses Tool verwendet das native RegExp von JavaScript, das der Spezifikation ECMAScript 2018+ folgt und moderne Funktionen wie Lookbehind-Assertions, benannte Erfassungsgruppen, Escapes für Unicode-Eigenschaften und das dotAll-Flag unterstützt. Die Grundbausteine: Literale Zeichen treffen auf sich selbst (die Regex 'Katze' trifft auf das Wort Katze); Zeichenklassen treffen auf eines aus einer Menge ('[a-z]' trifft auf Kleinbuchstaben); Quantoren steuern die Wiederholung (* null oder mehr, + eins oder mehr, ? null oder eins, {3,5} zwischen 3 und 5); Anker treffen auf Positionen (^ Zeichenkettenanfang, $ Ende, \b Wortgrenze); Gruppen erfassen Teiltreffer ((Katze|Hund) trifft auf eines von beiden und erfasst, welches); die Alternation bietet eine Auswahl. Regex glänzt beim Parsen von strukturiertem, aber nicht grammatikalischem Text (Protokolle, E-Mails, Telefonnummern, einfache HTML-Attribute) und versagt bei wirklich rekursiven Strukturen (vollständiges HTML, verschachteltes JSON). Verwenden Sie dafür einen Parser. Dieser Tester lässt Sie ein Muster mit sofortigem Feedback iterieren: Ändern Sie die Regex und die Treffer werden bei jedem Tastendruck neu berechnet.

Häufige Anwendungsfälle

  • Validieren Sie das Format von Benutzereingaben (E-Mails, Telefonnummern, Postleitzahlen), bevor Sie sie an Ihren Server senden.

  • Extrahieren Sie strukturierte Daten aus Log-Dateien (Zeitstempel, IPs, Statuscodes, Anfragepfade).

  • Führen Sie ein Suchen-und-Ersetzen über Hunderte von Dateien hinweg mit der Regex-Suche Ihres Editors durch.

  • Schreiben Sie URL-Rewrite-Regeln für Nginx, Apache .htaccess oder Vercel-Rewrites.

  • Parsen Sie einfache CSV-ähnliche Formate, bei denen ein echter Parser überdimensioniert wäre.

  • Erstellen Sie Formularvalidierungsmuster für HTML-<input pattern="...">-Attribute.

Häufig gestellte Fragen

Welche Flags werden unterstützt?
g (global: findet alle Treffer, nicht nur den ersten), i (ohne Unterscheidung von Groß- und Kleinschreibung), m (multiline: ^ und $ treffen auf Zeilenumbrüche), s (dotAll: . trifft auf Zeilenumbrüche), u (unicode: korrekte Behandlung von Mehrbyte-Zeichen), y (sticky: trifft nur an lastIndex). Kombinieren Sie Flags durch Aneinanderreihen: 'gim' aktiviert global + ohne Unterscheidung von Groß- und Kleinschreibung + multiline.
Wie treffe ich über mehrere Zeilen hinweg?
Zwei verschiedene Bedürfnisse: 'm' bewirkt, dass ^ und $ auf Zeilenumbrüche treffen (behandelt jede Zeile für die Anker als separate Zeichenkette). 's' bewirkt, dass . auf Zeilenumbrüche trifft (andernfalls trifft . auf alles außer Zeilenumbrüche). Verwenden Sie beide zusammen, wenn Sie auf Muster treffen müssen, die sich über Zeilen erstrecken.
Was ist der Unterschied zwischen gierigen und genügsamen Quantoren?
Gierige Quantoren (*, +, {n,m}) treffen auf so viel wie möglich. Genügsame (*?, +?, {n,m}?) treffen auf so wenig wie möglich. Das klassische Beispiel: Die Regex '<.*>' trifft bei '<a><b>' auf das gesamte '<a><b>'; '<.*?>' trifft nur auf '<a>'.
Wann sollte ich Regex NICHT verwenden?
Wenn die Struktur wirklich rekursiv ist (HTML, JSON, balancierte Klammern). Wenn Sie jeden Grenzfall korrekt behandeln müssen (Parsen von Daten mit Zeitzonen, Namen mit Apostrophen). Wenn die Grammatik der Eingabe gut definiert ist und eine Parsing-Bibliothek existiert. Berühmte Stack-Overflow-Antwort: Regex ist großartig zum Finden von Mustern, aber furchtbar zum Parsen von Sprachen.
Was sind benannte Erfassungsgruppen?
Anstatt dass (\d{4})-(\d{2})-(\d{2}) nummerierte Gruppen zurückgibt, verwenden Sie (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) und greifen auf die Treffer wie match.groups.year zu. Im echten Code deutlich wartungsfreundlicher.
Warum ist meine Regex bei bestimmten Eingaben langsam?
Katastrophales Backtracking. Verschachtelte Quantoren wie (a+)+ können bei adversariellen Eingaben exponentielle Zeit benötigen. Vermeiden Sie verschachtelte Quantoren und überlappende Alternationen. Die JavaScript-Engine hat kein Timeout, daher kann eine schlechte Regex eine Anfrage blockieren. Verwenden Sie für die Produktion das npm-Paket safe-regex, um riskante Muster zu erkennen.
Stimmt das mit dem überein, was meine serverseitige Regex-Engine macht?
Größtenteils: Die wichtigsten Regex-Dialekte (PCRE, re von Python, Regex von Ruby, Java) sind ähnlich, weisen aber subtile Unterschiede auf. Die Lookbehind-Syntax, das Verhalten von Zeichenklassen und die Unicode-Behandlung variieren. Für Parität in der Produktion testen Sie es zusätzlich in der Zielsprache.

Verwandte Tools