如何使用格式“验证日期;年月日h:mm:ss A”;用JavaScript?

如何使用格式“验证日期;年月日h:mm:ss A”;用JavaScript?,javascript,regex,validation,datetime,Javascript,Regex,Validation,Datetime,我想使用格式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|

我想使用格式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天-月。您的尝试进一步证明了它是多么不合理,您已经创建了一个不可读、不可维护的表达式,并且几乎不可能对其进行测试或修复


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

Dupe,dude:@jan-使用正则表达式进行验证不是一个好主意