我需要密码验证,例如
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',
]);
}
答案 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。使用正则表达式模式时,可能需要在数组中指定规则而不是使用管道分隔符,尤其是在正则表达式包含管道符时。
如果管道(|)
叹息在您的正则表达式模式中可用,则可能与分隔符冲突。