zf2 formFilter正则表达式howto

时间:2013-05-09 14:49:50

标签: zend-framework2 validation

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

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

            $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生成form,我还创建了validation filter,然后使用controller来处理正确的表单提交。

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

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

让我染色

1 个答案:

答案 0 :(得分:0)

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