【发布时间】:2013-02-18 05:45:08
【问题描述】:
我正在尝试验证日期时间格式 MM/DD/YYYY。这是我正在尝试的代码,请帮忙。
function ValidateDate(testdate) {
var Status
var reg = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;
if (!reg.test(testdate)) {
Status = false;
}
return Status;
}
【问题讨论】:
-
你的代码到底有什么问题?
-
正则表达式有问题
-
尝试使用正则表达式验证日期是一种快速发疯的好方法——将其结构化为接受每个月的所有天数,但不接受每个月的无效天数会导致组合爆炸。这样想......你想拒绝任何一个月的 32 号,几个月的 31 号,包括任何一年的 06/31,你必须每年接受 02/28,但大多数年份都拒绝 02/29,虽然如果年份可以被 4 整除,但如果可以被 100 整除,则您应该接受它,但如果年份可以被 400 整除,那么 02/29 就可以了。
标签: javascript jquery regex