Laravel 4 regex:pattern 密码验证无效
Laravel 4 regex:pattern validation for password not working
我正在尝试使用 regex:pattern 验证来检查我在 Laravel 4 中的密码强度。我正在按照以下方式尝试它,但如果我的 $validator 验证通过,它总是在 return 中给我 'Password is weak'。
public function checkPassStrength(){
$password = Input::get('password');
$validator = Validator::make(Input::all(), array(
'password' => 'alpha_dash|min:6'
));
$niceNames = array(
'password' => 'Password'
);
$validator->setAttributeNames($niceNames);
if($validator->fails()) {
return Response::json(array('valid' => false, 'msg' => $validator->messages()->first('password')));
} else {
$strong = Validator::make(Input::all(), array(
'password' => array('regex:/^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z])$/')
));
$medium = Validator::make(Input::all(), array(
'password' => array('regex:/^(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])$/')
));
if($strong->passes()){
return Response::json(array('valid' => false, 'msg' => 'Password is strong'));
} elseif($medium->passes()){
return Response::json(array('valid' => false, 'msg' => 'Password is medium'));
} else {
return Response::json(array('valid' => false, 'msg' => 'Password is weak'));
}
}
}
Lookahead 是一个 zerolength 断言,在正则表达式末尾添加 .+
:
/^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).+$/
或者,如果您想将长度限制在 8 到 20 个字符之间:
/^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,20}$/
我正在尝试使用 regex:pattern 验证来检查我在 Laravel 4 中的密码强度。我正在按照以下方式尝试它,但如果我的 $validator 验证通过,它总是在 return 中给我 'Password is weak'。
public function checkPassStrength(){
$password = Input::get('password');
$validator = Validator::make(Input::all(), array(
'password' => 'alpha_dash|min:6'
));
$niceNames = array(
'password' => 'Password'
);
$validator->setAttributeNames($niceNames);
if($validator->fails()) {
return Response::json(array('valid' => false, 'msg' => $validator->messages()->first('password')));
} else {
$strong = Validator::make(Input::all(), array(
'password' => array('regex:/^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z])$/')
));
$medium = Validator::make(Input::all(), array(
'password' => array('regex:/^(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])$/')
));
if($strong->passes()){
return Response::json(array('valid' => false, 'msg' => 'Password is strong'));
} elseif($medium->passes()){
return Response::json(array('valid' => false, 'msg' => 'Password is medium'));
} else {
return Response::json(array('valid' => false, 'msg' => 'Password is weak'));
}
}
}
Lookahead 是一个 zerolength 断言,在正则表达式末尾添加 .+
:
/^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).+$/
或者,如果您想将长度限制在 8 到 20 个字符之间:
/^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,20}$/