【问题标题】:zend validator regexzend 验证器正则表达式
【发布时间】:2011-03-15 05:46:46
【问题描述】:

我正在尝试在这样的 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})*$' 时出现内部错误”。

我猜这个正则表达式有问题?

任何帮助将不胜感激:)

谢谢, 皮特

【问题讨论】:

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


    【解决方案1】:

    尝试转义反斜杠:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          恕我直言,您在正则表达式末尾缺少斜杠“/”。我不是专家,但这对我有用: ->addValidator(new Zend_Validate_Regex('/^[a-zA-Z0-9][a-zA-Z0-9 ._-]{1,31}/'));

          【讨论】:

            猜你喜欢
            • 2013-06-23
            • 1970-01-01
            • 1970-01-01
            • 2011-08-08
            • 2012-05-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多