Ci-dessous ma règle de mot de passe:
return [
'Password' => 'required|min:8|max:100|regex:[a-z{1}[A-Z]{1}[0-9]{1}]',
'Password_confirmation' => 'required|min:8|max:100|regex:[a-z{1}[A-Z]{1}[0-9]{1}]',
];
J'essaie d'ajouter la règle telle qu'elle doit avoir
- au moins un petit omble
- au moins un gros omble
- au moins un chiffre
- au moins un omble spécial
- min 8 caractères
J'ai essayé ça et ça marche required|confirmed|min:8|max:100|regex:/^[\w]{1,}[\W]{1,}$/
, sur un logiciel de test regex. mais je ne sais pas pourquoi cela ne fonctionne pas dans Laravel
Suis-je en train de manquer quelque chose?
Utilisation:
return [
'password' => [
'required',
'confirmed',
'min:8',
'max:50',
'regex:/^(?=.*[a-z|A-Z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/',
]
];
Tout d'abord, vous n'avez pas besoin de vérifier la confirmation séparément. Utilisez simplement la règle confirmed
.
L'expression que vous utilisiez n'était pas valide et n'avait rien à voir avec ce que vous vouliez. Je vous suggère de faire quelques recherches sur les expressions régulières.
Étant donné que l'expression ci-dessus utilise des tuyaux (|
), vous pouvez spécifier les règles à l'aide d'un tableau.
Edit: Vous pouvez également utiliser cette expression , qui semble avoir été testé un peu plus en profondeur.
/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/
Vous voudrez peut-être vérifier le PasswordStrengthPackage . Il enregistre de nouvelles règles de validation qui font ce dont vous avez besoin et sont beaucoup plus lisibles qu'une expression régulière. Donc, dans votre cas, vous pouvez avoir ceci:
return [
'Password' => 'required|min:8|max:100|case_diff|numbers|letters|symbols|confirmed'
];
La règle Password_confirmation
N'est pas nécessaire tant que la valeur de confirmation est présente et que vous ajoutez la règle confirmed
pour le champ Password
.