很多时候,问题(特别是标记正则表达式的问题)会询问验证密码的方法.用户通常会寻求密码验证方法,包括确保密码包含特定字符,匹配特定模式和/或遵守最小字符数.这篇文章旨在帮助用户找到适当的密码验证方法,而不会大大降低安全性.
所以问题是:如何正确验证密码?
我正面临laravel自定义验证消息的问题,这是我所拥有的:
$rules = [
'first_name' => 'required|alpha|min:2',
'last_name' => 'required|alpha|min:2',
'email' => 'required|email|unique:users,email,' . Input::get('id') . ',id',
'password' => 'alpha_num|between:6,12|confirmed',
'password_confirmation' => 'alpha_num|between:6,12',
'address' => 'regex:/^[a-z0-9- ]+$/i|min:2',
'city' => 'alpha|min:2',
'state' => 'alpha|min:2|max:2',
'zip' => 'numeric|min:5|max:5',
'phone' => 'regex:/^\d{3}\-\d{3}\-\d{4}$/',
];
$messages = [
'unique' => 'The :attribute already been registered.',
'regex' => 'The :attribute number has to be formated : xxx-xxx-xxxx.',
];
Run Code Online (Sandbox Code Playgroud)
现在如果地址或电话号码有问题,因为两者都有正则表达式验证规则,错误信息将是::属性编号必须格式化:xxx-xxx-xxxx,我怎么能为每个不同的自定义消息一个?
非常基本的问题,我正在尝试为Laravel中的正则表达式验证规则自定义错误消息.特定的规则是密码,并要求密码有6-20个字符,至少一个数字和一个大写和小写字母,所以我想与用户沟通,而不是只是默认的消息,说格式为"无效".
所以我尝试以几种不同的方式将消息添加到lang文件中:
1)
'custom' => array(
'password.regex:' => 'Password must contain at least one number and both uppercase and lowercase letters.'
)
Run Code Online (Sandbox Code Playgroud)
2)
'custom' => array(
'password.regex' => 'Password must contain at least one number and both uppercase and lowercase letters.'
)
Run Code Online (Sandbox Code Playgroud)
3)
'custom' => array(
'password.regex:((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})' => 'Password must contain at least one number and both uppercase and lowercase letters.'
)
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效.有没有办法做到这一点?
因此,在任何人关闭此功能之前,我将在这里参考答案并提出问题。
所以我的问题是我想要对 laravel 进行强密码验证,包括 10 个字符、数字、大写小写等等。
我找到了:https : //stackoverflow.com/a/31549892/1270259
问题是,这个正则表达式看起来不对:
/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/
Run Code Online (Sandbox Code Playgroud)
由于我不擅长正则表达式,我想我会问如何修复它以使其验证:
我觉得他们的答案很接近。当这是针对 github 操作运行时,返回的错误是preg_match(): Compilation failed: escape sequence is invalid in character class at offset 46.
我也有任何想法如何让 Laravel 7 工作以匹配上述约束?