Page 1 sur 1

Probleme controle 'regex'

Posté : 04 mai 2024, 21:41
par filou80
Bonjour,

Je bloque sur un controle de mot de passe, je souhaite que le mot de passe doit être compris entre 8 et 20 caractéres avec au moins :
1 lettre minuscule
1 lettre majuscule
1 chiffre
1 caractére spéciaux parmis @$!%*?&
peu importe l'ordre :

Voici mon code :

Code : Tout sélectionner

if (empty($motDePasse)) { $error["motDePasse"] = 'Mot de passe obligatoire.'; } elseif (strlen($motDePasse) < 8 || strlen($motDePasse) > 20) { $error["motDePasse"] = 'Le mot de passe doit contenir entre 8 et 20 caractères.'; } elseif (!preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,20}$/', $motDePasse)) { $error["motDePasse"] = 'Mot de passe non conforme.'; }
mais ceci ne fonctionne pas.

Merci par avances pour vos retour et votre aide.
Bonne soirée.
@+ Filou

Re: [RESOLU] Probleme controle 'regex'

Posté : 15 mai 2024, 10:57
par @rthur
Moi j'aurai fait un preg_match() par condition pour que ça reste lisible et + facilement maintenable