正则表达式日期验证

时间:2018-04-09 14:20:21

标签: php regex validation date

我想知道如何将年份强制为4位

参考:https://stackoverflow.com/a/26972181/3541735

我的正则表达式稍微调整一下,不允许“/”或“。”只有几个月的数字:

^(?:(?:31(-)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(-)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(-)(?:0?2)\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(-)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

Debuggex Demo

1 个答案:

答案 0 :(得分:0)

鉴于正则表达式的复杂性,

要求4位数年份有点棘手,但在Debuggex的帮助下,我能够找到qba允许年份的三个位置被指定为2或4位数。通过删除这三次出现的?,现在要求年份包括所有4位数。否则,前两位数字是可选的。

?

这是更新的正则表达式的直观表示。请注意,三个旁路循环不再出现在年份的前两位数字上。

visual regex