m / d / yyyy和mm / dd / yyyy正则表达式与闰年检查

时间:2018-06-07 15:29:40

标签: javascript regex date

我使用的RegEx完全验证了2月份的闰年和日期。但有一种情况我还希望验证匹配m / d / yyyy和mm / dd / yyyy。

  • 05/06/2000 - 比赛
  • 5/6/2000 - 不匹配
  • 02/22/2018 - 比赛
  • 2/22/2018 - 不匹配

所以我想在下面的RegEx中忽略日期和月份的0。我试过给吗?在0之后,它使它成为可选但不起作用。

((0[13578]|1[02])[\/.](0[1-9]|[12][0-9]|3[01])[\/.](18|19|20)[0-9]{2})|((0[469]|11)[\/.](0[1-9]|[12][0-9]|30)[\/.](18|19|20)[0-9]{2})|((02)[\/.](0[1-9]|1[0-9]|2[0-8])[\/.](18|19|20)[0-9]{2})|((02)[\/.]29[\/.](((18|19|20)(04|08|[2468][048]|[13579][26]))|2000))

请提出任何建议。在此先感谢。

1 个答案:

答案 0 :(得分:4)

检查闰年的坏方法。使用日期对象本身:

(() => {
  const isLeapYear = year => new Date(Date.UTC(year, 1, 29)).getMonth() === 1;
  console.log( isLeapYear(2000) );
  console.log( isLeapYear(2001) );
})();