如何在 JavaScript 中使用格式“MMM DD, YYYY h:mm:ss A”验证日期

How to validate date with format “MMM DD, YYYY h:mm:ss A” in JavaScript?

本文关键字:mm YYYY ss 日期 验证 DD JavaScript MMM 格式      更新时间:2023-09-26

我想使用 MMM DD, YYYY h:mm:ss A 格式验证输入上的日期格式。 我在下面尝试过,但没有工作:

var r = /^(((0[13578]|1[02])['/'.-](0[1-9]|[12]'d|3[01])['/'.-]((19|[2-9]'d)'d{2})'s(0[0-9]|1[0-2]):(0[0-9]|[1-59]'d):(0[0-9]|[1-59]'d)'s(AM|am|PM|pm))|((0[13456789]|1[012])['/'.-](0[1-9]|[12]'d|30)['/'.-]((19|[2-9]'d)'d{2})'s(0[0-9]|1[0-2]):(0[0-9]|[1-59]'d):(0[0-9]|[1-59]'d)'s(AM|am|PM|pm))|((02)['/'.-](0[1-9]|1'd|2[0-8])['/'.-]((19|[2-9]'d)'d{2})'s(0[0-9]|1[0-2]):(0[0-9]|[1-59]'d):(0[0-9]|[1-59]'d)'s(AM|am|PM|pm))|((02)['/'.-](29)['/'.-]((1[6-9]|[2-9]'d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))'s(0[0-9]|1[0-2]):(0[0-9]|[1-59]'d):(0[0-9]|[1-59]'d)'s(AM|am|PM|pm)))$/g;
r.test("Dec 08, 2015 3:11:00 AM");

我不太擅长正则表达式,任何帮助将不胜感激!!

谢谢!

正则表达式在处理日期方面不是很好。例如,它不适合区分 30 天或 31 天的月份。您的尝试进一步证明了它是多么不合理,您创建了一个不可读、不可维护的表达式,并且几乎不可能测试或修复。

相反,请使用专用的日期/时间组件(如果符合您的要求,则可以存在,也可以自己开发一个)。