用逗号分隔日期的正则表达式在php中

时间:2017-03-29 10:54:42

标签: regex

使用逗号分隔符为多个日期设置正则表达式时遇到问题。 我的日期如下:

2017-03-25, 2017-03-27, 2017-03-28

请帮帮我们......

我正在尝试设置php验证以选择多日期(jquery日历)。

我的正则表达式是:

$value = "2017-03-25, 2017-03-27, 2017-03-28";
preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])([0-9])*$/",$value)

1 个答案:

答案 0 :(得分:2)

您只使用正则表达式匹配一个带有0+位数的日期。

您可以使用以下修复:

^([0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01]))(?:,\s*(?1))*$

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • ([0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])) - 第1组匹配并捕获类似日期的子字符串
  • (?:,\s*(?1))* - 零个或多个序列:
    • , - 逗号
    • \s* - 0+空格(删除*只匹配一个,或使用?匹配1或0个空格)
    • (?1) - 递归第1组子模式
  • $ - 字符串结束。