Laravel 5.2中的正则表达式验证

时间:2016-01-15 04:13:44

标签: php laravel laravel-5 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}]',
];

我正在尝试添加规则,使其必须

  
      
  1. 至少一个小char
  2.   
  3. 至少一个大字符
  4.   
  5. 至少一个号码
  6.   
  7. 至少一个特殊字符
  8.   
  9. min 8 chars
  10.   

我在正则表达式测试软件上尝试了这个并且它有效required|confirmed|min:8|max:100|regex:/^[\w]{1,}[\W]{1,}$/。但不确定为什么它在 Laravel

中不起作用

我错过了什么吗?

2 个答案:

答案 0 :(得分:26)

使用:

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

首先,您无需单独检查确认。只需使用confirmed规则即可。

您使用的表达方式无效,与您想要的内容无关。我建议你对正则表达式some research进行操作。

由于上面显示的表达式使用管道(|),您可以使用数组指定规则。

修改:您还可以使用this expression,这似乎已经过彻底的测试。

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

答案 1 :(得分:6)

您可能想查看PasswordStrengthPackage。它注册了新的验证规则,这些规则可以满足您的需要,并且比正则表达式更具可读性。所以在你的情况下你可以拥有:

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

只要确认值存在且您为Password_confirmation字段添加confirmed规则,就不需要Password规则。

相关问题