在cakephp中验证密码是不起作用的

时间:2015-02-12 10:10:12

标签: validation cakephp cakephp-2.3

我在模型中使用以下代码来验证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"

1 个答案:

答案 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,}$)'),