regex — Как проверить правильность нескольких дат в элементе с помощью регулярного выражения PHP Zend Framework

У меня есть поле ввода с MultiDatepicker выбора, MultiDatepicker введите даты в поле, как: 2016-10-02, 2016-10-13, 2016-10-25,
Как можно проверить все даты или один, может быть, я могу с помощью валидатора регулярного выражения массива, если существуют?

$element_edit->addValidator ('regex', false, array(
'pattern'=>'/^\d{4}-\d{2}-\d{2}$/',//for only one
'messages'=>array(
'regexNotMatch'=>'Validate error')
)
);
$form->addElement($element_edit);

1

Решение

Я полагаю, что вы ищете способ проверить часть разделенных запятыми (с пробелами или без пробелов) дат в определенном формате.

Вы можете использовать

'pattern'=>'/^(\d{4}-\d{2}-\d{2})(?:,\s*(?1))*$/'

Увидеть regex demo

подробности:

  • ^ — начало строки
  • (\d{4}-\d{2}-\d{2}) — ваш шаблон строки одной даты: 4 цифры, -, 2 цифры, - и 2 цифры
  • (?:,\s*(?1))* — ноль или более последовательностей
    • , — запятая
    • \s* — 0+ пробелов
    • (?1) — тот же шаблон, что и в группе 1 (ваш конкретный шаблон даты)
  • $ — конец строки (может быть заменен на \z запретить символ новой строки в конце)
2

Другие решения

Это достаточно просто. Мы используем Zend на работе, поэтому я много с этим справляюсь.

$this->addElement('text', 'firstname', array(
'label'      => 'Your first name:',
'required'   => true,
'validators' => array(
array('regex', false, array(
'pattern'   => '{The pattern}',
'messages'  =>  'Your firvalidation message'))
)
));
0

По вопросам рекламы [email protected]