web-dev-qa-db-fra.com

Validation des regex dans Laravel 5.2

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

  1. au moins un petit omble
  2. au moins un gros omble
  3. au moins un chiffre
  4. au moins un omble spécial
  5. 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?

16
Pankaj

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])(?=.*[!$#%]).*$/
26
Mike Rockétt

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.

6
Bogdan