JS验证身份证号,各种验证已做完整

function CardField(v_card) //v_card为所传的身份证号
{
var reg = /^\d{15}(\d{2}[0-9X])?$/i;
if (!reg.test(v_card)){
return false;
}
if(v_card.length==15){
var n = new Date();
var y = n.getFullYear();
if(parseInt("19" + v_card.substr(6,2)) < 1900 || parseInt("19" + v_card.substr(6,2)) > y){
return false;
}
var birth = "19" + v_card.substr(6,2) + "-" + v_card.substr(8,2) + "-" + v_card.substr(10,2);
if(!isDate(birth)){
return false;
}
}
if(v_card.length==18){
var n = new Date();
var y = n.getFullYear();
if(parseInt(v_card.substr(6,4)) < 1900 || parseInt(v_card.substr(6,4)) > y){
return false;
}
var birth = v_card.substr(6,4) + "-" + v_card.substr(10,2) + "-" + v_card.substr(12,2);
if(!isDate(birth)){
return false;
}
iW = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
iSum = 0;
for( i=0;i<17;i++){
iC = v_card.charAt(i);
iVal = parseInt(iC);
iSum += iVal * iW[i];
}
iJYM = iSum % 11;
if(iJYM == 0) sJYM = "1";
else if(iJYM == 1) sJYM = "0";
else if(iJYM == 2) sJYM = "x";
else if(iJYM == 3) sJYM = "9";
else if(iJYM == 4) sJYM = "8";
else if(iJYM == 5) sJYM = "7";
else if(iJYM == 6) sJYM = "6";
else if(iJYM == 7) sJYM = "5";
else if(iJYM == 8 ) sJYM = "4";
else if(iJYM == 9) sJYM = "3";
else if(iJYM == 10) sJYM = "2";
var cCheck = v_card.charAt(17).toLowerCase();
if( cCheck != sJYM ){
return false;
}
}
try{
var lvAreaId=v_card.substr(0,2);
return lvAreaId == "11" || lvAreaId == "12" || lvAreaId == "13" || lvAreaId == "14" || lvAreaId == "15" || lvAreaId == "21" || lvAreaId == "22" || lvAreaId == "23" || lvAreaId == "31" || lvAreaId == "32" || lvAreaId == "33" || lvAreaId == "34" || lvAreaId == "35" || lvAreaId == "36" || lvAreaId == "37" || lvAreaId == "41" || lvAreaId == "42" || lvAreaId == "43" || lvAreaId == "44" || lvAreaId == "45" || lvAreaId == "46" || lvAreaId == "50" || lvAreaId == "51" || lvAreaId == "52" || lvAreaId == "53" || lvAreaId == "54" || lvAreaId == "61" || lvAreaId == "62" || lvAreaId == "63" || lvAreaId == "64" || lvAreaId == "65" || lvAreaId == "71" || lvAreaId == "82" || lvAreaId == "82";
//if(SearchIdCodeMatch(v_card.substr(0,6))==-1)
//{
// return false;
//}
}
catch(ex){
}
return true;
}

//出生年月判断
function isDate(strDate) {
var strSeparator = "-"; //日期分隔符
var strDateArray;
var intYear;
var intMonth;
var intDay;
var boolLeapYear;
strDateArray = strDate.split(strSeparator);
if (strDateArray.length != 3)
return false;
intYear = parseInt(strDateArray[0], 10);
intMonth = parseInt(strDateArray[1], 10);
intDay = parseInt(strDateArray[2], 10);
if (isNaN(intYear) || isNaN(intMonth) || isNaN(intDay))
return false;
if (intMonth > 12 || intMonth < 1)
return false;
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intDay > 31 || intDay < 1))
return false;
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30 || intDay < 1))
return false;
if (intMonth == 2) {
if (intDay < 1)
return false;
boolLeapYear = false;
if ((intYear % 100) == 0) {
if ((intYear % 400) == 0)
boolLeapYear = true;
} else {
if ((intYear % 4) == 0)
boolLeapYear = true;
}
if (boolLeapYear) {
if (intDay > 29)
return false;
} else {
if (intDay > 28)
return false;
}
}
return true;
}

第一次发博客,发的不好,请见谅。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值