【问题标题】:Zend Framewok 1.12 Uppercase / Lowercase character validation errorZend Framework 1.12 大写/小写字符验证错误
【发布时间】:2015-07-29 12:23:03
【问题描述】:

我的表单中密码字段的条件之一是它应该有一个大写字母、一个小写字母和一个数字。为了实现这一点,我正在创建我的表单元素,如下所示。

$password = $this->createElement('password', 'password');
        $password->setAttrib('id', 'password')
                 ->setAttrib('class', 'form-control')
                 ->setAttrib('placeholder', 'Password')
                 ->setLabel('Password'.$this->indicatorIcon('required'))
                 ->setRequired(true)
                 ->addValidator('NotEmpty', true, array('messages' => $this->indicatorIcon('error').'Password can\'t be left blank'))
                 ->addValidator('StringLength', true, array('min' => 8, 'max' => 30, 'messages' => $this->indicatorIcon('error').'Password should be 8 - 30 characters long'))
                 ->addValidator('Regex', true, array('pattern' => '[A-Z]', 'messages' => $this->indicatorIcon('error').'Password should contain at least one upper case letter'))
                 ->addValidator('Regex', true, array('pattern' => '[a-z]', 'messages' => $this->indicatorIcon('error').'Password should contain at least one lower case letter'))
                 ->addValidator('Regex', true, array('pattern' => '/\d/', 'messages' => $this->indicatorIcon('error').'Password should contain at least one digit'))
                 ->addFilter('StringTrim');

但我只能验证小写字母或大写字母。我添加这些验证器的顺序会覆盖另一个。带数字的那个很好用。

有没有办法解决这个问题?我已经尝试了很多其他正则表达式,但它们没有奏效。任何人都可以帮助我使此代码正常工作或提出替代解决方案吗?

【问题讨论】:

    标签: php regex validation zend-framework


    【解决方案1】:

    您正在分别尝试下层和上层的正则表达式。如果你试试这个,我认为它会起作用。

    $password = $this->createElement('password', 'password');
            $password->setAttrib('id', 'password')
                     ->setAttrib('class', 'form-control')
                     ->setAttrib('placeholder', 'Password')
                     ->setLabel('Password'.$this->indicatorIcon('required'))
                     ->setRequired(true)
                     ->addValidator('NotEmpty', true, array('messages' => $this->indicatorIcon('error').'Password can\'t be left blank'))
                     ->addValidator('StringLength', true, array('min' => 8, 'max' => 30, 'messages' => $this->indicatorIcon('error').'Password should be 8 - 30 characters long'))
                     ->addValidator('Regex', true, array('pattern' => '(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+', 'messages' => $this->indicatorIcon('error').'Password should contain at least one upper case letter and one lower case letter minimum and should contain at least one digit'))
                     ->addFilter('StringTrim');
    

    我只是将 3 个模式合并为一个。

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多