0

我需要在 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 小时的大部分时间里,我一直在用头撞墙。

4

3 回答 3

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
}
于 2012-10-03T22:17:27.180 回答
2

更严格的正则表达式:

/[01]\d\/[0-3]\d\/\d{4} [01]\d:[0-5]\d [AP]M/
于 2012-10-03T22:23:09.230 回答
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)
于 2016-04-02T10:37:07.357 回答