🔍
Entwickler-Tools
May 21, 20269 min readBy BrowseryTools Team

Reguläre Ausdrücke erklärt: Ein praktischer Leitfaden für Entwickler

Lernen Sie die 20 % der Regex-Syntax kennen, die 80 % der realen Anwendungsfälle abdecken – Zeichenklassen, Quantoren, Anker, Gruppen und Flags – mit praktischen Beispielen für E-Mail-Validierung, Telefonnummern, URL-Extraktion und mehr.

regexreguläre ausdrückeentwicklermusterabgleichvalidierung

Reguläre Ausdrücke sind eines jener Werkzeuge, die Entwickler entweder lieben oder ganz meiden. Sie wirken einschüchternd – eine dichte Zeichenkette aus Sonderzeichen, die jede Lesbarkeit zu trotzen scheint –, aber das zugrunde liegende Modell ist einfach. Hat man erst verstanden, wie sie funktionieren, wird ein gut entworfener regulärer Ausdruck zu einem der mächtigsten Einzeiler-Werkzeuge im gesamten eigenen Werkzeugkasten.

Dieser Leitfaden bricht das Wesentliche herunter. Statt jeden Regex-Feature zu katalogisieren, konzentriert er sich auf die 20 % der Syntax, die 80 % der realen Anwendungsfälle abdecken: Zeichenklassen, Quantoren, Anker, Gruppen und Flags. Jedes Beispiel kann unterwegs im BrowseryTools Regex-Tester getestet werden – kostenlos, keine Anmeldung, alles bleibt im Browser.

Was ist ein regulärer Ausdruck?

Ein regulärer Ausdruck ist ein Muster, das eine Menge von Zeichenketten beschreibt. Wenn man einen Regex auf einen Text anwendet, fragt man: „Entspricht diese Zeichenkette meinem Muster?" – oder praktischer: „Finde alle Teilzeichenketten, die meinem Muster entsprechen." Das Muster selbst ist in einer kompakten Mini-Sprache geschrieben, die von den meisten Programmiersprachen nativ unterstützt wird.

Reguläre Ausdrücke sind nützlich, wenn man Eingaben validieren (ist das eine gültige E-Mail-Adresse?), Daten extrahieren (alle URLs aus einem Textblock herausziehen), Text transformieren (alle Vorkommen eines Musters ersetzen) oder eine Zeichenkette an einem komplexen Trennzeichen aufteilen möchte. Sie laufen im Browser, auf dem Server, im Terminal – überall.

Die Kernsyntax: 20 % für 80 % der Fälle

Literale Zeichen und der Punkt

Die meisten Zeichen in einem Regex entsprechen sich selbst. Das Muster helloentspricht der Zeichenkette „hello" buchstäblich. Der Punkt . ist der universelle Platzhalter – er entspricht jedem einzelnen Zeichen außer einem Zeilenumbruch. Also entspricht h.llo „hello", „hallo", „hxllo" und so weiter.

Zeichenklassen

Eckige Klammern definieren eine Zeichenklasse – eine Menge von Zeichen, von denen eines an dieser Position übereinstimmen kann.

  • [aeiou] – entspricht jedem einzelnen Vokal
  • [a-z] – entspricht jedem Kleinbuchstaben (Bereichssyntax)
  • [A-Za-z0-9] – entspricht jedem alphanumerischen Zeichen
  • [^0-9] – das ^ innerhalb von Klammern negiert die Klasse; entspricht allem, was KEINE Ziffer ist

Kurzform-Klassen decken die häufigsten Fälle ab: \d entspricht jeder Ziffer (wie [0-9]), \w entspricht jedem Wortzeichen (Buchstaben, Ziffern, Unterstrich) und \s entspricht jedem Leerzeichen. Ihre Großbuchstaben-Gegenstücke – \D, \W, \S – entsprechen dem Gegenteil.

Quantoren

Quantoren steuern, wie oft das vorangehende Element erscheinen muss.

  • * – null oder mehrmals
  • + – einmal oder mehrmals
  • ? – null oder einmal (macht etwas optional)
  • {3} – genau 3-mal
  • {2,5} – zwischen 2 und 5-mal (einschließlich)
  • {3,} – 3 oder mehrmals

Standardmäßig sind Quantoren gierig – sie entsprechen so viel wie möglich. Ein ? nach dem Quantor macht ihn faul: .*? entspricht so wenig wie möglich. Diese Unterscheidung ist wichtig, wenn man Inhalte zwischen Trennzeichen extrahiert.

Anker

Anker entsprechen keinen Zeichen; sie entsprechen Positionen in der Zeichenkette.

  • ^ – der Anfang der Zeichenkette (oder Zeilenanfang im Mehrzeilen-Modus)
  • $ – das Ende der Zeichenkette (oder Zeilenende im Mehrzeilen-Modus)
  • \b – eine Wortgrenze – die Position zwischen einem Wortzeichen und einem Nicht-Wortzeichen

Anker sind unerlässlich für die Validierung. Ohne sie würde das Muster \d+die Ziffern in „abc123xyz" erkennen. Mit Ankern – ^\d+$ – entspricht es nur Zeichenketten, die ausschließlich aus Ziffern bestehen.

Gruppen und Alternation

Klammern erzeugen einfangende Gruppen. Sie dienen zwei Zwecken: ein Teilausdruck zu gruppieren, damit ein Quantor auf die gesamte Gruppe angewendet wird, und die übereinstimmende Teilzeichenkette zur Extraktion zu erfassen.

// Gruppe mit Quantor: ein oder mehrere "ab"-Wiederholungen erkennen
/(ab)+/   →  entspricht "ab", "abab", "ababab"

// Alternation mit |: "cat" oder "dog" erkennen
/(cat|dog)/  →  entspricht "I have a cat" und "I have a dog"

// Benannte Einfangegruppe
/(?<year>d{4})-(?<month>d{2})-(?<day>d{2})/

Nicht-einfangende Gruppen – (?:...) – gruppieren ohne Erfassung, was sauberer ist, wenn man nur das Gruppierungsverhalten benötigt und den übereinstimmenden Text nicht extrahieren muss.

Praktische Beispiele

E-Mail-Validierung

/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/

Aufgeschlüsselt: ^ ankert am Anfang. [a-zA-Z0-9._%+-]+ entspricht dem lokalen Teil (ein oder mehrere erlaubte Zeichen). @ ist ein literales At-Zeichen. [a-zA-Z0-9.-]+ entspricht dem Domain-Namen. \. ist ein literaler Punkt (escaped, da nicht-escaped . „beliebiges Zeichen" bedeutet). [a-zA-Z]{2,} entspricht der TLD mit mindestens 2 Buchstaben. $ankert am Ende.

Telefonnummer (US-Format)

/^+?1?s?((?d{3})?[s.-]?)(d{3}[s.-]?d{4})$/

Das entspricht Formaten wie 555-867-5309, (555) 867-5309, +1 555 867 5309 und 5558675309. Der Schlüsseltrick ist die Verwendung von ?, um Trennzeichen optional zu machen, und die Gruppierung der Vorwahl mit optionalen Klammern.

URLs aus Text extrahieren

/https?://[^s"'<>]+/g

https? entspricht sowohl „http" als auch „https" (das s ist optional). :\/\/ entspricht dem literalen „://" mit escaped Schrägstrichen. [^\s"'<>]+ entspricht allem, was kein Leerzeichen oder häufige URL-terminierende Zeichen sind. Das g-Flag findet alle Übereinstimmungen, nicht nur die erste.

Regex-Flags

Flags verändern, wie das gesamte Muster angewendet wird.

  • g (global) – alle Übereinstimmungen finden, nicht nur die erste
  • i (Groß-/Kleinschreibung ignorieren) – Groß- und Kleinbuchstaben als gleichwertig behandeln; /hello/i entspricht „Hello", „HELLO" und „hello"
  • m (mehrzeilig)^ und $ entsprechen Anfang/Ende jeder Zeile statt der gesamten Zeichenkette
  • s (dotAll). entspricht auch Zeilenumbrüchen, nützlich für zeilenübergreifende Übereinstimmungen

In JavaScript stehen Flags nach dem schließenden Schrägstrich: /muster/gi. In Python werden sie als zweites Argument übergeben: re.findall(pattern, text, re.IGNORECASE).

JavaScript vs. Python: Wesentliche Unterschiede

Die Regex-Syntax ist zwischen JavaScript und Python weitgehend dieselbe, aber es gibt einige wichtige Unterschiede.

  • Benannte Gruppen: JavaScript verwendet (?<name>...), Python dasselbe. Beide geben benannte Gruppen zurück, greifen aber unterschiedlich darauf zu – match.groups.name in JS, match.group('name') in Python.
  • Lookahead / Lookbehind: Beide unterstützen (?=...) (positiver Lookahead) und (?!...) (negativer Lookahead). Python unterstützt auch variable Lookbehinds; ältere JavaScript-Engines tun das nicht.
  • Unicode: JavaScript erfordert das u-Flag für Unicode-Eigenschafts-Escapes wie \p{Letter}. Pythons re-Modul behandelt Unicode standardmäßig.
  • Raw Strings: In Python immer Raw Strings (r"\d+") verwenden, um doppeltes Escaping von Backslashes zu vermeiden. In JavaScript verwendet man entweder die literale /\d+/-Syntax oder die Zeichenkette "\\d+" beim Konstruieren mit new RegExp().

Häufige Regex-Fehler

  • Katastrophales Backtracking – Muster wie (a+)+ auf einer nicht übereinstimmenden Zeichenkette können zu exponentiellem Backtracking führen und die Engine einfrieren. Verschachtelte Quantoren auf überlappenden Mustern vermeiden.
  • Den Punkt nicht escapen3.14 als Muster entspricht „3X14", da . ein Platzhalter ist. 3\.14 verwenden, um den literalen Punkt zu erkennen.
  • Validierungsmuster nicht ankern – Ohne ^ und $ wird ein zur Validierung der gesamten Zeichenkette gedachtes Muster jede Zeichenkette erkennen, die das Muster als Teilzeichenkette enthält.
  • Regex für HTML-Parsing verwenden – Regex kann beliebig verschachtelte Strukturen nicht verarbeiten. Einen echten HTML-Parser verwenden (DOMParser im Browser, BeautifulSoup in Python).

Muster sicher im Browser testen

Regex im Editor ohne Feedback-Schleife zu schreiben ist schmerzhaft. Ein Muster schreiben, Code ausführen, scheitern sehen, Muster anpassen, erneut ausführen. Ein Live-Regex-Tester verkürzt diese Schleife – Übereinstimmungen werden in Echtzeit hervorgehoben, während man tippt.

Der BrowseryTools Regex-Tester ermöglicht es, ein Muster zu schreiben, Testzeichenketten einzufügen und alle Übereinstimmungen sofort hervorgehoben zu sehen. Er läuft vollständig im Browser, sodass man gegen echte Daten – Logs, Nutzereingaben, Produktionszeichenketten – testen kann, ohne etwas an einen Server zu senden.

Zusammenfassung

Reguläre Ausdrücke belohnen die Zeit, die man in das Erlernen investiert. Das Kernvokabular – Zeichenklassen, Quantoren, Anker, Gruppen und Flags – ist klein. Die Muster, die man daraus aufbauen kann, sind vielfältig. Mit den Beispielen aus diesem Leitfaden beginnen, sie gegen eigene Zeichenketten testen, und die Syntax wird schneller intuitiv, als man erwartet.


🛠️

Try the Tools — 100% Free, No Sign-Up

Everything runs in your browser. No uploads. No accounts. No ads.

Explore All Tools →