【问题标题】:regex date without the zero没有零的正则表达式日期
【发布时间】:2018-11-07 06:59:28
【问题描述】:

我需要能够允许格式为 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 方系统。我对输入的唯一工具是正则表达式检查。 (对于那些对我的问题投了反对票的人)

【问题讨论】:

  • 你为什么要把它复杂化? /(\d{1,2}\/(\d{1,2})\/(\d{4})/,然后进行单独检查以确保日期和月份正常(祝您好运,正则表达式允许 2/29,但仅限闰年)
  • 如果日期不正确(不担心闰年),我将插入另一个系统失败。所以 99/99/9999 行不通。

标签: regex


【解决方案1】:

您已经非常接近了,您只需将正则表达式锚定为开始和结束(并将月份中的零也设为可选),如下所示:

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

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

【讨论】:

  • 谢谢!我知道我错过了一些简单的东西。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2012-12-17
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
相关资源
最近更新 更多