我想使用格式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");
我并不擅长正则表达式,任何帮助都会受到赞赏!!
谢谢!
答案 0 :(得分:-1)
正则表达式对日期的处理并不是很好。例如,它不适合区分30或31天的月份。你的尝试进一步证明了它是多么不合理,你创造了一个难以理解的,不可维护的表达,而且几乎无法测试或修复它。
相反,请使用专用的日期/时间组件(如果符合您的要求,则为现有组件,或自行开发)。