如何使用正则表达式验证元素中的多日期 PHP Zend Framework

How can validate multidates in element with regexp PHP Zend Framework

我使用 multidatepicker select 进行字段输入,multidatepicker 在字段中输入日期,例如:2016-10-022016-10-132016-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);

这很简单。我们在工作中使用 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'))
    )
));

我相信您正在寻找一种方法来验证特定格式的大量逗号分隔(中间有或没有空格)日期。

您可以使用

'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 以禁止在末尾使用换行符)