#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. Ваш пример работает только на одну дату, мне нужно проверить несколько дат, что означает, что мне нужен кто-то вроде массива шаблонов для одного элемента.