Regex-Tester
Geben Sie ein Muster und einen Text zum Testen ein, dann wird jeder Treffer schon beim Tippen hervorgehoben.
Beispiele
Verwenden Sie $1 oder $<name> für Gruppen, $& für den ganzen Treffer und $$ für ein Dollarzeichen.
Häufige Zeichen
- .
- ein beliebiges Zeichen außer Zeilenumbruch
- \d
- eine Ziffer 0–9
- \w
- ein Buchstabe a–z, eine Ziffer oder ein Unterstrich
- \s
- Leerzeichen, Tabulator oder Zeilenumbruch
- \D \W \S
- das Gegenteil von \d, \w und \s
- \b
- Grenze zwischen einem Wortzeichen und einem anderen Zeichen
- ^
- Anfang des Textes, mit m der Zeile
- $
- Ende des Textes, mit m der Zeile
- [abc] [a-z]
- eines der Zeichen oder ein Zeichen im Bereich
- [^abc]
- keines der Zeichen
- a|b
- a oder b
- (…)
- einfangende Gruppe
- (?:…)
- nicht einfangende Gruppe
- (?<name>…)
- benannte Gruppe
- \1 \k<name>
- derselbe Text wie Gruppe 1 oder die Gruppe namens name
- *
- null- oder mehrmals
- +
- ein- oder mehrmals
- ?
- null- oder einmal
- {3} {2,5} {2,}
- genau 3-mal, 2- bis 5-mal oder mindestens 2-mal
- *? +? ??
- so wenige Male wie möglich
- (?=…)
- gefolgt von
- (?!…)
- nicht gefolgt von
- (?<=…) (?<!…)
- vorangestellt, nicht vorangestellt
- \p{L}
- ein Buchstabe in beliebiger Schrift (braucht u oder v)
So funktioniert es
Ein regulärer Ausdruck ist ein Muster, das Text beschreibt. \d+ bedeutet eine oder mehrere Ziffern, [a-z] einen Buchstaben von a bis z und ^ den Anfang des Textes. Das Muster wird von links nach rechts am Text ausprobiert, und jede Stelle, an der es passt, ist ein Treffer.
Der Tester verwendet die Engine Ihres Browsers, also die Variante regulärer Ausdrücke, die der ECMAScript-Standard für JavaScript festlegt. Sie unterscheidet sich in einigen Punkten von PCRE, Python und .NET: Es gibt zum Beispiel keine possessiven Quantoren und keine atomaren Gruppen, und ein Lookbehind darf beliebig lang sein.
Flags ändern, wie das Muster gelesen wird. g findet alle Treffer statt nur des ersten, i ignoriert den Unterschied zwischen Groß- und Kleinbuchstaben, m lässt ^ und $ für jede Zeile gelten, und s lässt den Punkt auch Zeilenumbrüche treffen. u liest den Text als Unicode-Zeichen statt als UTF-16-Einheiten, und v ist eine strengere Fassung von u aus ECMAScript 2024 mit Mengenoperationen in Zeichenklassen. y verlangt, dass jeder Treffer genau dort beginnt, wo der vorige endete, und d speichert die Positionen der Gruppen.
Klammern fangen ein, was sie getroffen haben, und werden nach ihrer öffnenden Klammer von links nummeriert. (?<name>…) gibt einer Gruppe einen Namen, und (?:…) gruppiert, ohne einzufangen. In der Ersetzung steht $1 für Gruppe 1, $<name> für eine benannte Gruppe, $& für den ganzen Treffer und $$ für ein Dollarzeichen. Ohne das Flag g wird nur der erste Treffer ersetzt.
Manche Muster brauchen extrem lange, etwa (a+)+$ bei einer langen Folge von a, auf die ein anderes Zeichen folgt. Die Engine probiert dann Kombinationen aus, deren Anzahl exponentiell mit der Länge des Textes wächst; das nennt man katastrophales Backtracking. Hier läuft die Suche in einem eigenen Thread, der nach zwei Sekunden abgebrochen wird, damit die Seite nicht einfriert. In einem Programm auf einem Server kann dasselbe Muster zum Sicherheitsrisiko werden (ReDoS).
Positionen werden wie in JavaScript in UTF-16-Einheiten gezählt, ein Emoji zählt also doppelt. Ein leerer Treffer, etwa ^ oder \b, wird mit einem dünnen Strich markiert. Ihr Text verlässt nie Ihren Browser.