date regexep验证器3种格式:dd / mm / yyyy mm / yyyy和yyyy

时间:2016-03-21 13:09:58

标签: regex

我试图制作一个日期regexp验证器,该验证器以下列格式保存日期:

  • 日/月/年
  • 月/年
  • YYYY 年度低于1600的任何日期都应无效

必须有效:

  

2015年1月24日,   2000年1月1日,   01/2000,   2000年,   1600,

必须无效:

  1599年,   12/1599,   15/12/1599,

我做了这个,但它不适用于dd/mm/yyyymm/yyyy

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

Regular expression visualization

Debuggex Demo

任何想法如何解决这个问题? THX

1 个答案:

答案 0 :(得分:1)

请注意,您无法使用正则表达式轻松表达最复杂的日期检查,例如:

  • 是31个月的有效日期?
  • 是29/02年的有效日期吗?

那就是说,以下正则表达式应该符合你的规范:

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

第一组将对应于日期部分,第二组对应于月份,第三组对应于年份。