js正则验证日期(包括闰年)

function CheckObjDate(word)
{
var checkResult = CheckDate(word);
switch(checkResult)
{
case 'ERRORNODATE':
alert('不能为空!');
break;
case 'ERRORDATEFORMAT':
alert('时间格式不正确!');
break;
default:
alert('通过!');
return true;
}

}
function CheckDate(checkDate)
{
var reg =/^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$/;
var word = checkDate;
if(word.length == 0)
{
return 'ERRORNODATE';
}
var splitedWord = word.split("-");
if(splitedWord.length > 3 || splitedWord.length < 2)
{
return 'ERRORDATEFORMAT';
}
else
{
for(var i = 0; i < splitedWord.length; i++)
if(splitedWord[i].length == 0)
return 'ERRORDATEFORMAT';
}
if(splitedWord.length == 2)
{
if(splitedWord[0].length < 1 || splitedWord[0].length > 2)
return 'ERRORDATEFORMAT';
else if(splitedWord[0].length == 1)
{
splitedWord[0] = "0" + splitedWord[0];
}
if(splitedWord[1].length < 1 || splitedWord[1].length > 2)
return 'ERRORDATEFORMAT';
else if(splitedWord[1].length == 1)
{
splitedWord[1] = "0" + splitedWord[1];
}
var now = new Date();
word = now.getFullYear() + "/" + splitedWord[0] + "/" + splitedWord[1];
}
if(splitedWord.length == 3)
{
if(splitedWord[0].length < 1 || splitedWord[0].length > 4)
return 'ERRORDATEFORMAT';
else if(splitedWord[0].length == 1)
{
splitedWord[0] = "200" + splitedWord[0];
}
else if(splitedWord[0].length == 2)
{
splitedWord[0] = "20" + splitedWord[0];
}
if(splitedWord[1].length < 1 || splitedWord[1].length > 2)
return 'ERRORDATEFORMAT';
else if(splitedWord[1].length == 1)
{
splitedWord[1] = "0" + splitedWord[1];
}
if(splitedWord[2].length < 1 || splitedWord[2].length > 2)
return 'ERRORDATEFORMAT';
else if(splitedWord[2].length == 1)
{
splitedWord[2] = "0" + splitedWord[2];
}
word = splitedWord[0] + "/" + splitedWord[1] + "/" + splitedWord[2];
}
if(!(word.match(reg)))
{
return 'ERRORDATEFORMAT';
}
else
{
return word;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值