Regex pour mot de passe fort

Utilisez /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/ pour vérifier qu'une chaîne entière est un mot de passe fort valide. Chaque exemple ci-dessous a été testé avec ce modèle, et vous pouvez l'ouvrir dans le testeur de regex avec les exemples préchargés.

Mis à jour le

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/
Ouvrir dans le testeur de regex
SaisieRésultat
Passw0rd!✓ Correspondance
C0rrect-Horse✓ Correspondance
aB3$efgh✓ Correspondance
password✗ Aucune correspondance
Password1✗ Aucune correspondance
Sh0rt!✗ Aucune correspondance
ALLCAPS123!✗ Aucune correspondance

Fonctionnement du modèle

PartieSignification
(?=.*[a-z])Anticipation (lookahead) : au moins une lettre minuscule quelque part
(?=.*[A-Z])Au moins une lettre majuscule
(?=.*\d)Au moins un chiffre
(?=.*[^A-Za-z0-9])Au moins un symbole
.{8,}Huit caractères ou plus au total

Exemples de code

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;

Remarques et limites

Chaque anticipation vérifie une seule règle sans consommer de caractères, de sorte que les règles peuvent apparaître dans n'importe quel ordre. Les recommandations actuelles du NIST privilégient la longueur (15 caractères ou plus) et la vérification des mots de passe ayant fuité, plutôt que les règles de composition : envisagez une règle basée uniquement sur la longueur, accompagnée d'un indicateur de robustesse. Vous pouvez en générer un avec le Générateur de mot de passe.

Questions fréquentes

Quelle est la regex pour un mot de passe fort ?
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/ — elle correspond à la chaîne entière. Consultez le tableau ci-dessus pour le rôle de chaque partie.
Quels exemples correspondent ?
Parmi les exemples testés, ceux-ci correspondent : Passw0rd!, C0rrect-Horse, aB3$efgh. Les autres ne correspondent pas.
Comment tester cette regex ?
Cliquez sur « Ouvrir dans le testeur de regex » : le modèle, les indicateurs et le texte d'exemple se chargent automatiquement, et les correspondances s'affichent en surbrillance pendant que vous modifiez le texte.