Javascript 使用正则表达式验证dd/mm/yyyy中的日期格式

Javascript 使用正则表达式验证dd/mm/yyyy中的日期格式,javascript,regex,Javascript,Regex,我想验证用户使用带有javascript的正则表达式输入的日期值的格式 我的正则表达式不允许使用'/'字符,/[^0-9\.]/g', 但是我想让'/'也通过正则表达式测试。我需要在此处进行哪些修改?您可以使用此正则表达式: /(^(((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[\/

我想验证用户使用带有javascript的正则表达式输入的日期值的格式

我的正则表达式不允许使用
'/'
字符,
/[^0-9\.]/g',


但是我想让
'/'
也通过正则表达式测试。我需要在此处进行哪些修改?

您可以使用此正则表达式:

/(^(((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)$)/
这将以
dd/mm/yyyy
格式验证日期,并检查闰年

"20/11/1992".match(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/)
上面的代码段应该可以,但是有太多的验证需要在日期上执行,所以我不推荐使用正则表达式

相反,我建议像大多数网站一样,放置3个组合框(dd/mm/yyyy),允许用户选择一个日期,然后使用验证该日期(如果值没有更改,则日期是正确的)


注意:答案基于您不想使用任何现有库的假设(或使用
输入[type=“date”]
时浏览器提供的本机验证)

这取决于您需要的严格程度?我觉得事情很简单:

/[0-3]\d\W[01]\d\W(?>19|20)\d{2}/g
应该足够了

日期:
[0-3]\d
2位数字,第一个0-3,第二个任意数字
\d

月份:
[01]\d
2位数字,第一位0或1,第二位任意数字

年份:
(?>19 | 20)\d{2}
4位数字,以19或20(19世纪和20世纪)开始,然后任何数字两次
{2}

另外请注意,我使用了
\W
来匹配单个非单词字符,作为匹配
/
的变通方法。您确定不能改用转义斜杠吗?

从中修改后的斜杠可以非常准确地使用它。这适用于1000-9999年,即,并且假设我们在9999年之前不会改变闰年的工作方式;)


也许可以将/字符作为允许的字符添加到regexp中?您可以使用以下命令:^([0-2]{1}[0-9]{1}|(30 | 31))\/(0[0-9]{1}|(10 | 11 | 12))\/[0-9]{4}$Nice Twist与leapyear一起使用,当然,通过图像很容易理解follow@winner_joiner是的,我是debuggex可视化的超级粉丝。在处理像这样庞大的正则表达式时,这是一个巨大的帮助。如果你点击网站上正则表达式文本的某个地方,它实际上会显示你在视频中的位置,这就是我如何快速找到在哪里添加
/
的方法。真是太棒了!我刚刚发现了一个bug-它与
10
不匹配,因为存在模式
[01][1-9]
。所以我们还需要一个案例
(?:0[1-9]| 1\d)
–@Vaclav nice find!我添加了它,但没有附加分组:)谢谢。。。。干得好!!
^(?:(?:(?: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}|29/02/(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00))$