Laravel中的密码验证

时间:2016-01-05 07:01:33

标签: php regex laravel laravel-5

我需要密码验证,例如

1 English uppercase characters (A – Z)
2 English lowercase characters (a – z)
3 Base 10 digits (0 – 9)
4 Non-alphanumeric (For example: !, $, #, or %)
5 Unicode characters

我已经应用了一些代码,但我得到的结果是错误。 我认为正则表达式我使用的格式错误。请检查我的代码并纠正我。 感谢

AuthController.php

protected function validator(array $data)
    {
        return Validator::make($data, [
            'firstname' => 'required|max:255',
            'lastname' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|
                           regex:array("/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/")|
                           min:8|
                           confirmed',
        ]);
    }

2 个答案:

答案 0 :(得分:0)

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

这应该为你做。

答案 1 :(得分:0)

Regex验证器使用正则表达式字符串,但是您作为数组传递。

尝试更改代码

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

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

另外,看看@vks的回答。他的正则表达式看起来更清晰。

P.S。使用正则表达式模式时,可能需要在数组中指定规则而不是使用管道分隔符,尤其是在正则表达式包含管道符时。

如果管道(|)叹息在您的正则表达式模式中可用,则可能与分隔符冲突。