JAVASCRIPT身份证验证函数

    技术2022-05-11  121

    function  CheckIDCard(StrNumber)  {//判断身份证号码格式函数//公民身份号码是特征组合码,//排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码//身份证号码长度判断if(StrNumber.length<15||StrNumber.length==16||StrNumber.length==17||StrNumber.length>18){CheckIDCard =false;}//身份证号码最后一位可能是超过100岁老年人的X//所以排除掉最后一位数字进行数字格式测试//全部换算成17位数字格式var Ai;if(StrNumber.length==18){Ai = StrNumber.substring(0,17);}else{Ai =StrNumber.substring(0,6)+"19"+StrNumber.substring(6,9);} if(IsNumeric(Ai)==false){return false;}var strYear,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){return false;}var arrVerifyCode = new Array("1","0","x","9","8","7","6","5","4","3","2");var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);var i,TotalmulAiWi=0;for (i=0; loop<16;loop++{     TotalmulAiWi = TotalmulAiWi + parseInt(Ai.substring(i+1,1)) * Wi[i];  }var modValue =TotalmulAiWi%11 ;var strVerifyCode = arrVerifyCode[modValue];Ai = Ai & strVerifyCode;if((StrNumber.length== 18)&&(StrNumber!=Ai)){return false;}} function  IsNumeric(oNum)  {   if(!oNum) return false;   var strP=/^d+(.d+)?$/;   if(!strP.test(oNum)) return false;   try{   if(parseFloat(oNum)!=oNum) return false;   }   catch(ex)   {    return false;   }   return true; } function  IsValidDate(psYear, psMonth, psDay) {    if(psYear==null || psMonth==null || psDay==null)    {        return false;    }    var sYear  = new String(psYear);    var sMonth = new String(psMonth);    var sDay   = new String(psDay);    if(IsValidYear(sYear)==false)    {        return false;    }    if(IsValidMonth(sMonth)==false)    {        return false;    }    if(IsValidDay(sDay)==false)    {        return false;    }    var nYear  = parseInt(sYear,  10);    var nMonth = parseInt(sMonth, 10);    var nDay   = parseInt(sDay,   10);    if(sYear=="" &&  sMonth=="" && sDay=="")    {        return true;    }    if(sYear=="" || sMonth=="" || sDay=="")    {        return false;    }        if(nMonth < 1 || 12 < nMonth)    {        return false;    }    if(nDay < 1 || 31 < nDay)    {        return false;    }    if(nMonth == 2)    {        if((nYear % 400 == 0|| (nYear % 4 == 0&& (nYear % 100 != 0))        {            if((nDay < 1|| (nDay > 29))            {                return false;            }        }        else         {            if((nDay < 1|| (nDay > 28))            {                return false;            }        }    }    else if((nMonth == 1)  ||             (nMonth == 3)  ||             (nMonth == 5)  ||             (nMonth == 7)  ||             (nMonth == 8)  ||             (nMonth == 10||             (nMonth == 12))    {        if((nDay < 1|| (31 < nDay))        {            return false;        }    }    else     {        if((nDay < 1|| (30 < nDay))        {            return false;        }    }    return true;}  

    最新回复(0)