需要在Javascript中验证MM / dd / yyyy hh:mm tt

时间:2012-10-03 22:13:58

标签: javascript validation

我需要在Javascript中验证特定格式的日期字符串。

格式为:MM / dd / yyyy hh:mm tt

我很难找到一个可以处理它的日期库,或者一个正在执行相同操作的正则表达式函数。

我已经尝试了Date.js,这很接近,但有以下问题:

date.parseExact('10/21/2011 06:00 AM', ['MM/dd/yyyy hh:mm tt']); //passes
date.parseExact('10/21/2011 06:00 A', ['MM/dd/yyyy hh:mm tt']); //passes

第二个不应该通过。

有没有人知道可以满足这种需求的正则表达式,或者我是否使用了Date.js库?任何帮助都会受到赞赏,我已经在2小时的大部分时间里撞到了墙上。

3 个答案:

答案 0 :(得分:2)

您是否需要验证它是实际日期,还是仅仅遵循确切的格式?如果只是格式,你可以使用这个正则表达式:

/[0-1]\d\/[0-3]\d\/\d{4} [0-1]\d:[0-5]\d [aApP][mM]/

您可以将Date.js与上述正则表达式结合使用,以验证它是否为有效日期,并与您的确切格式相匹配。例子:

01/01/9999 01:00 AM - matches
12/31/9999 01:59 PM - matches
99/99/9999 99:99 AM - no match (day/month out of range)
12/31/9999 99:59 PM - no match (hours out of range)
01/01/9999 99:99 A  - no match (no match on A)

完整的JS示例:

var re = /[0-1]\d\/[0-3]\d\/\d{4} [0-1]\d:[0-5]\d [AP][M]/; // [aApP][mM] for case insensitive AM/PM
var date = '10/21/2011 06:00 AM';
if (re.test(date) && date.parseExact(date, ['MM/dd/yyyy hh:mm tt']){
    // date is exact format and valid
}

答案 1 :(得分:2)

更严格的正则表达式:

/[01]\d\/[0-3]\d\/\d{4} [01]\d:[0-5]\d [AP]M/

答案 2 :(得分:0)

请尝试使用此正则表达式格式为dd / MM / yyyy hh:mm tt

"[0-3][0-9]\/[0-1][0-9]\/[0-9]{4} [0-1][0-9]:[0-5][0-9] [paPA][Mm]" 

上述表达式的格式如下

01/12/9999 01:00 AM - matches
12/31/9999 01:59 PM - no match
39/19/9999 01:59 PM - matches
39/19/9999 99:99 PM - no match (time out of range)
12/31/9999 99:59 PM - no match (hours out of range)