使用逗号分隔符为多个日期设置正则表达式时遇到问题。 我的日期如下:
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)
答案 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组子模式$
- 字符串结束。