首页 > 解决方案 > 没有零的正则表达式日期

问题描述

我需要能够允许格式为 MM/DD/YYYY 的日期,其中前导月份和日期可以在适当的情况下有前导零或不带前导零

换句话说:01-09 或 1-9 是可接受的月份

01-09 或 1-9 是可以接受的日子

我对此非常接近:

/(0[1-9]|1[0-2])\/(0[1-9]|1[0-9]|2[0-9]|3(0|1))\/\d{4}/

以我有限的知识,我认为这样做会允许前导零(或没有)

/(0?[1-9]|1[0-2])\/(0[1-9]|1[0-9]|2[0-9]|3(0|1))\/\d{4}/

但这允许诸如 2008 年 13 月 31 日之类的日期,原因我无法解释。

问题:我需要一个正则表达式,它允许格式为 MM/DD/YYYY 的所有可能日期,其中月份或日期可以包含前导零(或不包含前导零),两者都将通过。

编辑:

如果用户的输入不是真实日期,我正在使用下游失败的第 3 方系统。我对输入的唯一工具是正则表达式检查。(对于那些反对我的问题的人)

标签: regex

解决方案


您非常接近,您所需要的只是将正则表达式锚定为开始和结束(并使几个月内的零也是可选的),如下所示:

^(0?[1-9]|1[0-2])\/(0?[1-9]|1[0-9]|2[0-9]|3(0|1))\/\d{4}$

现在它不会接受 2008 年 13 月 31 日。


推荐阅读