Reguläre Ausdrücke – Praxisbeispiele

7 Kategorien
Fertige Regex-Muster für die häufigsten Anwendungsfälle: E-Mail · URL · Datum · Telefon · IP-Adresse · Passwort Diese Sammlung enthält praxiserprobte reguläre Ausdrücke für die Validierung und Extraktion von Daten. Die Patterns sind für verschiedene Programmiersprachen optimiert.

E-Mail – E-Mail-Adressen validieren

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

E-Mail-Validierung – ein einfaches, aber robustes Pattern für die meisten Anwendungsfälle. Unterstützt lokale Teile mit Punkten, Unterstrichen und Prozentzeichen.

Beispiele
# JavaScript
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
emailRegex.test("user@example.com")true
emailRegex.test("user.name+tag@example.co.uk")true
emailRegex.test("user@example")false
# Python
import re
pattern = re.compile(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$')
pattern.match("user@example.com")Match
Tipp: Für 99% der Anwendungsfälle ist dieses Pattern ausreichend. Für vollständige RFC 5322-Konformität sind deutlich komplexere Patterns erforderlich – in der Praxis nicht empfehlenswert.

URL – Web-Adressen erkennen

/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/
/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/

URL-Erkennung – matcht HTTP, HTTPS und FTP-URLs. Das Pattern ist einfach gehalten und deckt die meisten gängigen URLs ab.

Beispiele
# JavaScript
const urlRegex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/;
urlRegex.test("https://example.com")true
urlRegex.test("http://sub.example.co.uk/path?query=1")true
urlRegex.test("ftp://ftp.example.com/file.txt")true
# Ausführlichere URL-Validierung
/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/
Tipp: Für eine genauere Validierung können Sie das erweiterte Pattern verwenden. Beachten Sie jedoch, dass URLs extrem komplex sein können – eine 100%ige Validierung ist in der Praxis kaum möglich.

Datum – Datumsformate validieren

/^\d{4}-\d{2}-\d{2}$/ · /^\d{2}\.\d{2}\.\d{4}$/
// ISO 8601 (YYYY-MM-DD) /^\d{4}-\d{2}-\d{2}$/ // Deutsches Format (DD.MM.YYYY) /^\d{2}\.\d{2}\.\d{4}$/ // Datum mit optionaler Zeit (YYYY-MM-DD HH:MM:SS) /^\d{4}-\d{2}-\d{2}( \d{2}:\d{2}(:\d{2})?)?$/

Datumsvalidierung – verschiedene Patterns für die häufigsten Datumsformate. Die einfachen Patterns prüfen nur das Format, keine logische Korrektheit (z.B. 2023-13-32 würde matchen).

Beispiele
# ISO 8601
/^\d{4}-\d{2}-\d{2}$/.test("2023-12-31")true
# Deutsches Format
/^\d{2}\.\d{2}\.\d{4}$/.test("31.12.2023")true
# Mit logischer Prüfung (vereinfacht)
/^(19|20)\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/
# Datum + Zeit (optional)
/^\d{4}-\d{2}-\d{2}( \d{2}:\d{2}(:\d{2})?)?$/.test("2023-12-31 14:30")true
Tipp: Für eine vollständige Datumsvalidierung (inklusive Schaltjahre) empfehlen sich Programmiersprachen-Funktionen wie Date.parse() in JavaScript oder datetime.strptime() in Python.

Telefon – Telefonnummern validieren

/^[0-9+\-\s()]{8,20}$/
// Einfache Validierung (erlaubt +, -, Leerzeichen, Klammern) /^[0-9+\-\s()]{8,20}$/ // Deutsches Festnetz / Handy /^(\+49|0)[0-9]{7,15}$/ // US-Format (xxx) xxx-xxxx /^\(\d{3}\) \d{3}-\d{4}$/

Telefonnummern-Validierung – je nach Anwendungsfall können Sie einfache oder länderspezifische Patterns verwenden. Die einfache Variante erlaubt die meisten gängigen Formate.

Beispiele
# Einfaches Pattern
/^[0-9+\-\s()]{8,20}$/.test("+49 123 4567890")true
/^[0-9+\-\s()]{8,20}$/.test("(030) 12345678")true
# Deutsches Format
/^(\+49|0)[0-9]{7,15}$/.test("03012345678")true
/^(\+49|0)[0-9]{7,15}$/.test("+4915123456789")true
# US-Format
/^\(\d{3}\) \d{3}-\d{4}$/.test("(123) 456-7890")true
Tipp: Telefonnummern-Validierung ist länderspezifisch. Für internationale Anwendungen verwenden Sie Bibliotheken wie libphonenumber (Google) für eine korrekte Validierung.

IP-Adressen – IPv4 und IPv6

IPv4 · IPv6
// IPv4 (einfach) /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ // IPv6 (vereinfacht) /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$/

IP-Adressen-Validierung – IPv4 ist relativ einfach, IPv6 ist deutlich komplexer. Für die meisten Anwendungen reicht eine einfache Validierung mit bekannten Funktionen.

Beispiele
# IPv4 JavaScript
const ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
ipv4Regex.test("192.168.1.1")true
ipv4Regex.test("255.255.255.255")true
ipv4Regex.test("999.999.999.999")false
# Python (einfach)
import re
ipv4_pattern = re.compile(r'^(\d{1,3}\.){3}\d{1,3}$')
# Besser: socket.inet_aton() für vollständige Validierung
import socket
try: socket.inet_aton("192.168.1.1")True
Tipp: Für IPv4 und IPv6 empfehle ich die Verwendung von Programmiersprachen-Funktionen wie socket.inet_pton() in Python oder net.isIPv4() in Node.js – das ist robuster als eigene Regex.

Passwort – Sicherheitsanforderungen prüfen

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/
// Mindestens 8 Zeichen, Groß- und Kleinbuchstaben, Zahl, Sonderzeichen /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/ // Mindestens 12 Zeichen, 3 von 4 Kriterien /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)|(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&])|(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])|(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&]).{12,}$/

Passwort-Stärke prüfen – mit Lookahead können Sie verschiedene Kriterien (Kleinbuchstaben, Großbuchstaben, Zahlen, Sonderzeichen) unabhängig voneinander prüfen.

Beispiele
# Starke Passwort-Prüfung
const strongPw = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
strongPw.test("Password123!")true
strongPw.test("password")false (kein Sonderzeichen, kein Großbuchstabe)
# Flexible Prüfung (3 von 4 Kriterien)
const flexiblePw = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)|(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&])|(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])|(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&]).{12,}$/;
flexiblePw.test("Password123")true (3 von 4: Groß, Klein, Zahl)
Tipp: Neben der Regex-Prüfung sollten Sie auch eine Blacklist für häufige Passwörter (z.B. "123456", "password") führen. Verwenden Sie Have I Been Pwned API für zusätzliche Sicherheit.

Weitere Muster – Zusätzliche Praxisbeispiele

PLZ · HTML-Tag · UUID · Hex-Farbe
// Deutsche Postleitzahl (5-stellig) /^\d{5}$/ // HTML-Tag (einfach) /<[^>]+>/ // UUID (Version 4) /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/ // Hex-Farbe (#RGB, #RRGGBB) /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/

Zusätzliche Regex-Muster für häufige Validierungsaufgaben – PLZ, HTML-Tags, UUIDs und Hex-Farben.

Beispiele
# Deutsche PLZ
/^\d{5}$/.test("10115")true
/^\d{5}$/.test("1234")false
# HTML-Tag (Achtung: einfach, nicht für komplexe Fälle geeignet)
/<[^>]+>/.test("<p>Hello</p>")true
# UUID
/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test("123e4567-e89b-12d3-a456-426614174000")true
# Hex-Farbe
/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test("#FF0000")true
/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test("#F00")true
Tipp: Für HTML-Parsing sollten Sie keine Regex verwenden – verwenden Sie stattdessen einen richtigen HTML-Parser (z.B. Cheerio in JavaScript, BeautifulSoup in Python). Regex ist für einfache Extraktionen geeignet, nicht für vollständiges Parsing.

Regex-Praxis im Überblick

E-Mail user@example.com
Einfach, aber effektiv
URL https://example.com
Mit oder ohne Subdomain
Datum 2023-12-31 / 31.12.2023
ISO oder deutsch
Telefon +49 123 4567890
International oder national
IP 192.168.1.1
IPv4 oder IPv6
Passwort Starkes Passwort
8+ Zeichen, verschiedene Klassen

Quick Summary

URL
https://...
Datum
YYYY-MM-DD
Telefon
+49 123...
IP
192.168.1.1
Passwort
Starke Prüfung
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ · /^\d{4}-\d{2}-\d{2}$/