Regex für starkes Passwort

Mit /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/ prüfst du, ob ein gesamter String ein gültiges starkes Passwort ist. Jedes Beispiel unten wurde mit diesem Muster getestet. Du kannst es mit den vorgeladenen Beispielen direkt im Regex Tester öffnen.

Aktualisiert am

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/
Im Regex Tester öffnen
EingabeErgebnis
Passw0rd!✓ Treffer
C0rrect-Horse✓ Treffer
aB3$efgh✓ Treffer
password✗ Kein Treffer
Password1✗ Kein Treffer
Sh0rt!✗ Kein Treffer
ALLCAPS123!✗ Kein Treffer

So funktioniert das Muster

TeilBedeutung
(?=.*[a-z])Lookahead: mindestens ein Kleinbuchstabe irgendwo im String
(?=.*[A-Z])Mindestens ein Großbuchstabe
(?=.*\d)Mindestens eine Ziffer
(?=.*[^A-Za-z0-9])Mindestens ein Sonderzeichen
.{8,}Insgesamt acht oder mehr Zeichen

Codebeispiele

JavaScript

const re = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}', value))

PHP

preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/', $value) === 1;

Hinweise und Einschränkungen

Jeder Lookahead prüft eine Regel, ohne Zeichen zu verbrauchen. Deshalb können die Regeln in beliebiger Reihenfolge stehen. Die aktuellen NIST-Empfehlungen setzen auf Länge (15+ Zeichen) und eine Prüfung gegen bekanntgewordene Passwörter statt auf Zusammensetzungsregeln. Erwäge daher eine reine Längenregel plus eine Stärkeanzeige. Ein Passwort kannst du mit dem Passwort-Generator erstellen.

Häufige Fragen

Wie lautet der Regex für ein starkes Passwort?
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/ — er prüft den gesamten String. Was die einzelnen Teile bewirken, zeigt die Tabelle oben.
Welche Beispiele passen?
Von den getesteten Beispielen treffen diese zu: Passw0rd!, C0rrect-Horse, aB3$efgh. Die anderen nicht.
Wie teste ich diesen Regex?
Klicke auf „Im Regex Tester öffnen“. Das Muster, die Flags und der Beispieltext werden automatisch geladen, und Treffer werden beim Bearbeiten markiert.