2016-01-15 2 views
13

Unten ist meine Regel für Passwort:Regex Validierung in Laravel 5.2

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

  1. atleast ein kleines Zeichen
  2. haben muss
  3. atleast ein großer char
  4. atleast eine nummer
  5. atleast ein besonderes Zeichen
  6. min 8 Zeichen

Ich versuchte dies 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 Laravel

Fehle ich etwas?

Antwort

22

Verwendung:

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

Erstens brauchen Sie nicht separat die Bestätigung zu überprüfen. Verwenden Sie einfach die confirmed Regel.

Der von Ihnen verwendete Ausdruck war ungültig und hatte nichts damit zu tun, was Sie wollten. Ich schlage vor, Sie tun some research auf regulären Ausdrücken.

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

Bearbeiten: Sie könnten auch this expression verwenden, die etwas gründlicher getestet worden zu sein scheint.

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

Wenn die Anzahl der Zeichen, die ein Benutzer für sein Kennwort verwenden darf, zu niedrig ist, kann dies zu einer schlechten Benutzererfahrung führen, insbesondere wenn der Benutzer einen Kennwortmanager verwendet, der Kennwörter mit mehr als 20 Zeichen generiert oder einen Ausdruck verwenden möchte ihr Passwort. –

6

Vielleicht möchten Sie die PasswordStrengthPackage überprüfen. Er registriert neue Validierungsregeln, die das tun, was Sie brauchen, und sind viel besser lesbar als ein regulärer Ausdruck. Also in Ihrem Fall können Sie dies haben:

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

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