wake-up-neo.com

Regex Validierung in Laravel 5.2

nten ist meine Regel für das Passwort:

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}]',
];

Ich versuche, die Regel so hinzuzufügen, dass es muss

  1. mindestens eine kleine Saibling
  2. mindestens ein großer char
  3. mindestens eine Nummer
  4. mindestens ein Sonderzeichen
  5. min 8 Zeichen

Ich habe es versucht und es funktioniert required|confirmed|min:8|max:100|regex:/^[\w]{1,}[\W]{1,}$/, auf einem Regex-Tester-Software. aber nicht sicher, warum es nicht funktioniert in Laravel

Vermisse ich etwas?

16
Pankaj

Verwenden:

return [
    'password' => [
        'required',
        'confirmed',
        'min:8',
        'max:50',
        'regex:/^(?=.*[a-z|A-Z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/',
    ]
];

Erstens müssen Sie die Bestätigung nicht separat prüfen. Verwenden Sie einfach die confirmed -Regel.

Der von Ihnen verwendete Ausdruck war ungültig und hatte nichts mit dem zu tun, was Sie wollten. Ich schlage vor, Sie tun einige Nachforschungen über reguläre Ausdrücke.

Aufgrund der Tatsache, dass der oben gezeigte Ausdruck Pipes verwendet (|) können Sie die Regeln mithilfe eines Arrays angeben.

Edit: Sie können auch diesen Ausdruck verwenden, der anscheinend etwas gründlicher getestet wurde.

/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/
26
Mike Rockétt

Vielleicht möchten Sie das PasswordStrengthPackage überprüfen. Es werden neue Validierungsregeln registriert, die genau das tun, was Sie benötigen und die viel besser lesbar sind als reguläre Ausdrücke. In Ihrem Fall können Sie also Folgendes haben:

return [
    'Password' => 'required|min:8|max:100|case_diff|numbers|letters|symbols|confirmed'
];

Das Password_confirmation Regel wird nicht benötigt, solange der Bestätigungswert vorhanden ist und Sie die confirmed Regel für das Feld Password hinzufügen.

6
Bogdan