您好,欢迎访问一九零五行业门户网

js验证身份证类

js验证身份证类
js验证身份证类var idcardnoutil = {
    provinceandcitys: {11:北京,12:天津,13:河北,14:山西,15:内蒙古,21:辽宁,22:吉林,23:黑龙江,31:上海,32:江苏,33:浙江,34:安徽,35:福建,36:江西,37:山东,41:河南,42:湖北,43:湖南,44:广东,45:广西,46:海南,50:重庆,51:四川,52:贵州,53:云南,54:西藏,61:陕西,62:甘肃,63:青海,64:宁夏,65:新疆,71:台湾,81:香港,82:澳门,91:国外},
        powers: [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],paritybit: [1,0,x,9,8,7,6,5,4,3,2],genders: {male:男,female:女},
        checkaddresscode: function(addresscode) {
            var check = /^[1-9]\d{5}$/.test(addresscode);
            if(!check) return false;
            if(idcardnoutil.provinceandcitys[parseint(addresscode.substring(0,2))]){
                return true;
            } else {
                return false;
            }
        },
checkbirthdaycode: function(birdaycode){
        var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birdaycode);
        if(!check) return false;
        var yyyy = parseint(birdaycode.substring(0,4),10);
        var mm = parseint(birdaycode.substring(4,6),10);
        var dd = parseint(birdaycode.substring(6),10);
        var xdata = new date(yyyy,mm-1,dd);
        if(xdata > new date()){
            return false;//生日不能大于当前日期
        }else if ( ( xdata.getfullyear() == yyyy ) && ( xdata.getmonth () == mm - 1 ) && ( xdata.getdate() == dd ) ){
            return true;
        }else{
            return false;
        }
    },
getparitybit: function(idcardno){
        var id17 = idcardno.substring(0,17);
        var power = 0;
        for(var i=0;i            power += parseint(id17.charat(i),10) * parseint(idcardnoutil.powers[i]);
        }
        var mod = power % 11;
        return idcardnoutil.paritybit[mod];
    },
checkparitybit: function(idcardno){
        var paritybit = idcardno.charat(17).touppercase();
        if(idcardnoutil.getparitybit(idcardno) == paritybit){
            return true;
        }else{
            return false;
        }
    },
checkidcardno: function(idcardno){
        //15位和18位身份证号码的基本校验
        var check = /^[0-9]{15}|([0-9]{17}([0-9]|x|x))$/.test(idcardno);
        if(!check) return false;
        //判断长度为15位或18位
        if(idcardno.length==15){
            return idcardnoutil.check15idcardno(idcardno);
        }else if(idcardno.length==18){
            return idcardnoutil.check18idcardno(idcardno);
        }else{
            return false;
        }
    },
    //校验15位的身份证号码
    check15idcardno: function(idcardno){
        //15位身份证号码的基本校验
        //在javascript中,正则表达式只能使用/开头和结束,不能使用双引号
        var check = /^[1-9][0-9]{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))[0-9]{3}$/.test(idcardno);
        if(!check) return false;
        //校验地址码
        var addresscode = idcardno.substring(0,6);
        check = idcardnoutil.checkaddresscode(addresscode);
        if(!check) return false;
            var birdaycode = '19' + idcardno.substring(6,12);
        //校验日期码
        return idcardnoutil.checkbirthdaycode(birdaycode);
    },
    //校验18位的身份证号码
    check18idcardno: function(idcardno){
        //18位身份证号码的基本格式校验
        //在javascript中,正则表达式只能使用/开头和结束,不能使用双引号
        var objreg = /^[1-9][0-9]{5}[1-9][0-9]{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))[0-9]{3}([0-9]|x|x)$/i;
        var check = objreg.test(idcardno);
        if(!check) return false;
        //校验地址码
        var addresscode = idcardno.substring(0,6);
        check = idcardnoutil.checkaddresscode(addresscode);
        if(!check) return false;
        //校验日期码
        var birdaycode = idcardno.substring(6,14);
        check = idcardnoutil.checkbirthdaycode(birdaycode);
        if(!check) return false;
        //验证校检码
        return idcardnoutil.checkparitybit(idcardno);
    },
    formatedatecn: function(day){
        var yyyy =day.substring(0,4);
        var mm = day.substring(4,6);
        var dd = day.substring(6);
        return yyyy + '-' + mm +'-' + dd;
    },
    //获取信息
    getidcardinfo: function(idcardno){
        var idcardinfo = {
            gender:, //性别
            birthday: // 出生日期(yyyy-mm-dd)
        };
        if(idcardno.length==15){
            var aday = '19' + idcardno.substring(6,12);
            idcardinfo.birthday=idcardnoutil.formatedatecn(aday);
            if(parseint(idcardno.charat(14))%2==0){
                idcardinfo.gender=idcardnoutil.genders.female;
            }else{
                idcardinfo.gender=idcardnoutil.genders.male;
            }
        }else if(idcardno.length==18){
            var aday = idcardno.substring(6,14);
            idcardinfo.birthday=idcardnoutil.formatedatecn(aday);
            if(parseint(idcardno.charat(16))%2==0){
                idcardinfo.gender=idcardnoutil.genders.female;
            }else{
                idcardinfo.gender=idcardnoutil.genders.male;
            }
        }
        return idcardinfo;
    },
getid15:function(idcardno){
        if(idcardno.length==15){
            return idcardno;
        }else if(idcardno.length==18){
            return idcardno.substring(0,6) + idcardno.substring(8,17);
        }else{
            return null;
        }
    },
getid18: function(idcardno){
        if(idcardno.length==15){
            var id17 = idcardno.substring(0,6) + '19' + idcardno.substring(6);
            var paritybit = idcardnoutil.getparitybit(id17);
            return id17 + paritybit;
        }else if(idcardno.length==18){
            return idcardno;
        }else{
            return null;
        }
    }
};
//验证护照是否正确
function checknumber(number){
    var str=number;
    //在javascript中,正则表达式只能使用/开头和结束,不能使用双引号
    var expression=/(p\d{7})|(g\d{8})/;
    var objexp=new regexp(expression);
    if(objexp.test(str)==true){
       return true;
    }else{
       return false;
    } 
};
ad:真正免费,域名+虚机+企业邮箱=0元
其它类似信息

推荐信息