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

#php #regex #zend-framework #zend-form #zend-validate

#php #регулярное выражение #zend-framework #zend-форма #zend-validate

Вопрос:

У меня есть поле ввода с помощью выбора 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))*$/'

Ответ №1:

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

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

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

Смотрите демонстрацию регулярных выражений

Подробные сведения:

  • ^ — начало строки
  • (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'))
    )
));
  

Комментарии:

1. Ваш пример работает только на одну дату, мне нужно проверить несколько дат, что означает, что мне нужен кто-то вроде массива шаблонов для одного элемента.