Laravel中的密码验证


Password validation in Laravel

我需要像一样的密码验证

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

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

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

Regex验证器接受Regex字符串,但您作为数组传递。

尝试更改您的代码

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

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

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

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

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

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

这应该为你做。