3

使用 zendframework v2,我在表单工厂创建的字段上遇到了正则表达式验证器的问题。所有其他字段(使用相同的模式)都可以正常工作。

任何提示或指针表示赞赏。

            $inputFilter->add($factory->createInput([ 
            'name' => 'organizationName', 
            'filters' => array( 
                array('name' => 'StripTags'), 
                array('name' => 'StringTrim'), 
            ), 
            'validators' => array( 
                array(
                    'name' => 'NotEmpty',
                    'options' => array(
                        'messages' => array(
                            \Zend\Validator\NotEmpty::IS_EMPTY => 'Organization name field is empty',
                        ),
                    ),
                ),
                array(
                    'name' => 'Regex',
                    'options' => array(
                        'pattern' => '/^[a-z0-9 &-_\.,@]{3,25}$/i',
                        'messages' => array(
                            \Zend\Validator\Regex::INVALID => 'Invalid input, only a-z, 0-9 & - _ . characters allowed',
                        ),
                    ),
                ),
                array (
                    'name' => 'StringLength', 
                    'options' => array( 
                        'encoding' => 'UTF-8', 
                        'min' => '2', 
                        'max' => '25', 
                        'messages' => array(
                            \Zend\Validator\StringLength::TOO_SHORT => 'Organization name field must be at least 8 characters in length',
                            \Zend\Validator\StringLength::TOO_LONG => 'Organization name field must be no longer than 25 characters in length',
                        ),
                    ), 
                ), 
            ), 
        ])); 

附加细节:我正在使用 ZF2 生成表单,我还创建了一个验证过滤器,然后使用控制器来处理正确的表单提交。

我遇到的问题是上面处理“organizationName”正则表达式过滤器的 inputFilter 对象。

似乎虽然我在表单定义和[a-z0-9 &-_.,@]{3,25}的输入过滤器中使用的正则表达式模式不处理字符串Intl. Widgets Inc.即使我没有收到来自 $form->getMessages() 等的错误消息。

给我上色难倒

4

1 回答 1

0

那是因为您的正则表达式确实匹配Intl. Widgets Inc.http ://rubular.com/r/oPbk2cdarB

于 2015-08-23T14:07:36.497 回答