JAVASCRIPT身份证验证函数

本文介绍了一个用于验证中国身份证号码有效性的算法。该算法通过检查地址码、出生日期码、顺序码及校验码来确保身份证号码的正确性,并详细解释了如何通过一系列数学运算验证这些信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


functionCheckIDCard(StrNumber)
...{
//判断身份证号码格式函数
//
公民身份号码是特征组合码,
//
排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码

//身份证号码长度判断
if(StrNumber.length<15||StrNumber.length==16||StrNumber.length==17||StrNumber.length>18)
...{
CheckIDCard
=false;
}


//身份证号码最后一位可能是超过100岁老年人的X
//
所以排除掉最后一位数字进行数字格式测试
//
全部换算成17位数字格式

varAi;
if(StrNumber.length==18)
...{
Ai
=StrNumber.substring(0,17);
}

else
...{
Ai
=StrNumber.substring(0,6)+"19"+StrNumber.substring(6,9);
}


if(IsNumeric(Ai)==false)
...{
returnfalse;
}


varstrYear,strMonth,strDay,strBirthDay;
strYear
=parseInt(Ai.substring(Ai,6,4));
strMonth
=parseInt(Ai.substring(Ai,10,2));
strDay
=parseInt(Ai.substring(Ai,12,2));

if(IsValidDate(strYear,strMonth,strDay)==false)
...{
returnfalse;
}


vararrVerifyCode=newArray("1","0","x","9","8","7","6","5","4","3","2");
varWi=newArray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);

vari,TotalmulAiWi=0;
for(i=0;loop<16;loop++)
...{
TotalmulAiWi
=TotalmulAiWi+parseInt(Ai.substring(i+1,1))*Wi[i];
}


varmodValue=TotalmulAiWi%11;
varstrVerifyCode=arrVerifyCode[modValue];

Ai
=Ai&strVerifyCode;

if((StrNumber.length==18)&&(StrNumber!=Ai))
...{
returnfalse;
}


}


functionIsNumeric(oNum)
...{
if(!oNum)returnfalse;
varstrP=/^d+(.d+)?$/;
if(!strP.test(oNum))returnfalse;
try...{
if(parseFloat(oNum)!=oNum)returnfalse;
}

catch(ex)
...{
returnfalse;
}

returntrue;
}


functionIsValidDate(psYear,psMonth,psDay)
...{
if(psYear==null||psMonth==null||psDay==null)
...{
returnfalse;
}


varsYear=newString(psYear);
varsMonth=newString(psMonth);
varsDay=newString(psDay);

if(IsValidYear(sYear)==false)
...{
returnfalse;
}


if(IsValidMonth(sMonth)==false)
...{
returnfalse;
}


if(IsValidDay(sDay)==false)
...{
returnfalse;
}


varnYear=parseInt(sYear,10);
varnMonth=parseInt(sMonth,10);
varnDay=parseInt(sDay,10);

if(sYear==""&&sMonth==""&&sDay=="")
...{
returntrue;
}


if(sYear==""||sMonth==""||sDay=="")
...{
returnfalse;
}


if(nMonth<1||12<nMonth)
...{
returnfalse;
}

if(nDay<1||31<nDay)
...{
returnfalse;
}


if(nMonth==2)
...{
if((nYear%400==0)||(nYear%4==0)&&(nYear%100!=0))
...{
if((nDay<1)||(nDay>29))
...{
returnfalse;
}

}

else
...{
if((nDay<1)||(nDay>28))
...{
returnfalse;
}

}

}

elseif((nMonth==1)||
(nMonth
==3)||
(nMonth
==5)||
(nMonth
==7)||
(nMonth
==8)||
(nMonth
==10)||
(nMonth
==12))
...{
if((nDay<1)||(31<nDay))
...{
returnfalse;
}

}

else
...{
if((nDay<1)||(30<nDay))
...{
returnfalse;
}

}


returntrue;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值