【问题标题】:Regular expression for ddmmyyyy date including validation for leap year [duplicate]ddmmyyyy 日期的正则表达式,包括闰年的验证[重复]
【发布时间】:2014-10-14 08:24:48
【问题描述】:

我们如何使用正则表达式检查 ddmmyyyy 格式的日期(包括闰年验证)?什么是正则表达式...?

【问题讨论】:

  • 你已经尝试过了吗?
  • 不用正则表达式你能做到吗?维护起来会很麻烦。
  • 您是否考虑过正则表达式可能不是解决该问题的正确方法?
  • 我正在 angularJS 中尝试这个,我必须为此验证编写另一个指令

标签: regex angularjs validation


【解决方案1】:

老兄,你问了我几周来一直在研究的问题。我邀请那些发表评论的人给出一个打破这一点的日期。现在请注意,这适用于 1000-9999 年,即 Proleptic Gregorian 并假设我们在 9999 年之前不会改变闰年的工作方式;)

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

Debuggex Demo

【讨论】:

  • 准确地说,您的正则表达式适用于 1000-9999 年
  • 优秀和它的工作..
  • 每年 10 月 10 日和 10 月 30 日失败。就是这样。
  • @MichaelPaulukonis works perfectly fine?请注意,这是 ddmmyyyy 而不是 mmddyyyy,因为您的 10/29 和 10/30 是。
【解决方案2】:

dd/MM/yyyy 的正则表达式,即使是闰年:

pattern="(^(((0[1-9]|[12][0-8])[\/](0[1-9]|1[012]))|((29|30|31)[\/](0[13578]|1[02]))|((29|30)[\/](0[4,6,9]|11)))[\/](19|[2-9][0-9])\d\d$)|(^29[\/]02[\/](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)"

或者简单

pattern= "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)$"

【讨论】:

  • 您好,感谢您的回答,但是我想要 ddmmyyyy 的日期验证,而不是 dd/MM/yyyy 格式
  • pattern="^(0?[1-9]|[12][0-9]|3[01])(0?[1-9]|1[012])( (19|20)\\d\\d)$";
  • @user3337073:请在您的帖子中编辑它。
  • 它不验证闰年,一个月的 30 或 31 天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 2013-04-22
相关资源
最近更新 更多