zend验证器正则表达式

时间:2011-03-15 05:46:47

标签: regex zend-form zend-form-element zend-validate

我正在尝试在像这样的zend表单元素上使用正则表达式验证器 -

    $textarea = $this->createElement('text','scores');

    $textarea->setLabel('Enter a comma separated list of numbers');

    $textarea->setDecorators(
            array('ViewHelper',
                array('HtmlTag', 
                    array('tag' => 'div',
                          'class'=>'scores'
                    )
                )
            )
    );
    $textarea->addDecorator('Label')
        ->setRequired(true)
        ->addFilter(new Zend_Filter_StringTrim())
        ->addValidator('regex',true,array('^\d{1,3}([,]\d{1,3})*$'))
        ->addErrorMessage('Please enter a comma separated list of numbers');

我只是想验证文本区域是否包含以逗号分隔的数字列表。

目前我在使用模式时出现“内部错误”^ \ d {1,3}([,] \ d {1,3})* $'“。

我想正则表达式有问题吗?

任何帮助将不胜感激:)

感谢, 皮特

4 个答案:

答案 0 :(得分:0)

尝试转义反斜杠:

'^\\d{1,3}(,\\d{1,3})*$'

您不需要逗号周围的括号。

此外,您可能希望允许数字和分隔符之间的空格:

'^\\s*\\d{1,3}(\\s*,\\s*\\d{1,3})*\\s*$'

答案 1 :(得分:0)

您需要为开始和结束正则表达式添加符号。例如:

->addValidator('regex',true,array('#^\\d{1,3}([,]\\d{1,3})*$#'))

答案 2 :(得分:0)

是的,你需要分隔符。但不要逃避你的斜线:)

答案 3 :(得分:0)

恕我直言,你错过了斜线" /"在你的正则表达式结束时。我不是专家,但这对我有用: ->addValidator(new Zend_Validate_Regex('/^[a-zA-Z0-9][a-zA-Z0-9 ._-]{1,31}/'));