我在模型中使用以下代码来验证cakephp 2.X
中的密码 'password' => array(
'ruleName' => array(
'rule' => '(^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$)',
'message' => "Password should contain: 8 characters, 1 upper case, 1 lower case, 1 number."
)
),
你能告诉我哪里错了吗?在表单提交上我总是收到相同的消息;
密码应包含:8个字符,1个大写字母,1个小写字母,1个 号。
即使我添加有效密码,例如"QWert123"
答案 0 :(得分:2)
此部分(?=.*?[#?!@$%^&*-])
的正则表达式模式与密码"QWert123"
不匹配,因为您没有密码中的一个字符。在这种情况下,你可以选择
'rule' => '(^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]*).{8,}$)',
编辑:在cakephp2.X中,当需要使用正则表达式时使用custom
验证cakephp docs
'rule' => array('custom','(^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]*).{8,}$)'),