【发布时间】:2015-01-24 07:47:05
【问题描述】:
我需要进行日期验证才能以 dd/mm/yyyy 格式接受它。但是,所有条件都可以正常工作,除非我输入 6 位数的年份,它也接受它,例如 -
12/12/200000
根据我的代码是有效的。以下是我的代码:
function validate(value) {
if(!value.match(/\d\d\/\d\d\/\d\d\d\d/))
return false;
return checkdate(value);
}
function checkdate(val)
{
var dates = val.split(/\D/);
if(dates[0] <= 0 || dates[0] > 31)
return false;
if(dates[1] <= 0 || dates[1] > 12)
return false;
var now = new Date(dates[2],dates[1]-1,dates[0]);
if (isNaN(now))
return false;
now.setHours(0,0,0,0);
if (now.getFullYear() == dates[2] && now.getMonth() + 1 == dates[1] && now.getDate() == dates[0])
return true;
return false;
}
我不知道为什么它允许年份作为 6 位有效输入?
【问题讨论】:
-
您的拆分可能不正确。没有什么能匹配你的分裂
-
但是 reg exp 不应该允许代码到那时
-
创建一个像
var regExp = /\d{2}\/\d{2}\/\d{4}/这样的正则表达式,然后用 match() 函数检查它,然后你不必创建任何额外的函数来检查每个字段的有效性
标签: javascript regex validation