【问题标题】:How to validate date with format “MMM DD, YYYY h:mm:ss A” in JavaScript?如何在 JavaScript 中使用“MMM DD, YYYY h:mm:ss A”格式验证日期?
【发布时间】:2016-05-06 11:13:45
【问题描述】:

我想使用格式 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");

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

谢谢!

【问题讨论】:

标签: javascript regex validation datetime


【解决方案1】:

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

改为使用专用的日期/时间组件(如果它符合您的要求,则可以使用现有组件,或者自己开发一个)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多