我想实现密码验证,因此我在Laravel 5项目中编写了以下函数:
public function isValidPassword($password) {
return preg_match_all('$S*(?=S{8,20})(?=S*[a-z])(?=S*[A-Z])(?=S*[d])(?=S*[W])S*$', $password) ? true : false;
}
现在,我想检查函数返回true还是false。
if($this->isValidPassword($request->newPassword) == false){
// $message = 'error';
} else { // $message = 'success'; }
我在密码字段中输入“ NqUeeDF45 $ t”,它返回false。
我尝试了所有可能的字符串,但似乎函数始终返回false。我的正则表达式模式错误吗?我该如何解决这个问题?
答案 0 :(得分:1)
PHP在正则表达式周围需要定界符(斜杠最常用,但是其他字符也可以):
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$_!%*?&-]{8,20}$/
您可能将前导^
更改为$
,以消除“缺少定界符”错误,从而更改了正则表达式的含义。