我需要像一样的密码验证
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,}$
这应该为你做。