regex - 没有零的正则表达式日期
问题描述
我需要能够允许格式为 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 方系统。我对输入的唯一工具是正则表达式检查。(对于那些反对我的问题的人)
解决方案
您非常接近,您所需要的只是将正则表达式锚定为开始和结束(并使几个月内的零也是可选的),如下所示:
^(0?[1-9]|1[0-2])\/(0?[1-9]|1[0-9]|2[0-9]|3(0|1))\/\d{4}$
现在它不会接受 2008 年 13 月 31 日。
推荐阅读
- mysql - 如何从查询构建器的模型关系中获取数据?
- reactjs - React 没有导入 redux 动作,即使它被导出了
- sql - 如何将 2 个不同的数据集引用到 gsheet 查询公式中?
- node.js - 频道上不存在 bulkDelete
- java - Apache date utils parseDateStrictly 方法无法正常工作
- c - RISC V 链接器找不到 -lgcc
- javascript - 如何在“类”中获取“a”标签的元素?
- javascript - 浏览器最小化或未查看特定选项卡时,Chrome 代码段暂停
- c++ - 平面缓冲区的使用
- konvajs - 如何在 KonvaJs 中获得碰撞的三个形状的交集并删除未碰撞的部分?