Zend валидатор регулярное выражение - PullRequest
1 голос
/ 15 марта 2011

Я пытаюсь использовать валидатор регулярных выражений в элементе формы 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 голосов
/ 16 марта 2014

ИМХО, вам не хватает косой черты "/" в конце вашего регулярного выражения. Я не эксперт, но это работает для меня: ->addValidator(new Zend_Validate_Regex('/^[a-zA-Z0-9][a-zA-Z0-9 ._-]{1,31}/'));

0 голосов
/ 03 ноября 2012

Вам нужно добавить символы для начала и конца регулярного выражения. Например:

->addValidator('regex',true,array('#^\\d{1,3}([,]\\d{1,3})*$#'))
0 голосов
/ 27 ноября 2012

правда вам нужны разделители. но не убегай от косой черты :)

0 голосов
/ 15 марта 2011

Попробуйте избежать обратной косой черты:

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

Вам не нужны скобки вокруг запятой.

Также, возможно, вы захотите разрешить пробел между числами и разделителями:

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