JS 常用校验方法(15/18位身份证/手机/邮箱/银行卡)

341 阅读2分钟

身份证(支持15/18位)/电话手机验证/邮箱验证/银行卡验证

//身份证号合法性验证
//支持15位和18位身份证号
//支持地址编码、出生日期、校验位验证
function IdentityCodeValid(code) {
    var city={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:"国外 "};
    var tip = "";
    var pass= true;

    if(code.length != 15 && code.length != 18){
        tip = "身份证号长度错误";
        pass = false;
    }

    if(!city[code.substr(0,2)]){
        tip = "地址编码错误";
        pass = false;
    }

    //15位身份证
    if(code.length == 15){
        if(!code || !/^\d{6}\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}?$/i.test(code)){
            tip = "15位身份证号格式错误";
            pass = false;
        }
    }
  
    //18位身份证
    if(code.length == 18){
        // 18位格式校验
        if(!code || !/^\d{6}(18|19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)){
            tip = "18位身份证号格式错误";
            pass = false;
        }

        // 最后一位校验
        code = code.split('');
        //∑(ai×Wi)(mod 11)
        //加权因子
        var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
        //校验位
        var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
        var sum = 0;
        var ai = 0;
        var wi = 0;
        for (var i = 0; i < 17; i++)
        {
            ai = code[i];
            wi = factor[i];
            sum += ai * wi;
        }
        var last = parity[sum % 11];
        if(parity[sum % 11] != code[17]){
            tip = "校验位错误";
            pass =false;
        }
    }
    return pass;
}

//电话手机验证
function checkTel(tel,text){
    var isPhone = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
    //var isMob=/^((\+?86)|(\(\+86\)))?(13[012356789][0-9]{8}|15[012356789][0-9]{8}|18[02356789][0-9]{8}|147[0-9]{8}|1349[0-9]{7})$/;
    var isMob=/^[1][3,4,5,7,8][0-9]{9}$/;
    if(isMob.test(tel)||isPhone.test(tel)){
        return true;
    }
    else{
        //$.openPrompt({type:"info", content:text+"格式不正确!"});
        return false;
    }
}

//邮箱验证
function checkEmail(text){
    var myReg=/^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/;
    if(myReg.test(text)){
        return true;
    }else{
        return false;
    }
}

//银行卡验证
function checkBankNum(text){
    var myReg=/^([1-9]{1})(\d{15}|\d{17}|\d{18})$/;
    if(myReg.test(text)){
        return true;
    }else{
        return false;
    }
}

//车牌验证
function checkCarNum(text){
    var xreg=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
    var creg=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
    if(text.length == 7){
        return creg.test(text);
    } else if(text.length == 8){
        return xreg.test(text);
    } else{
        return false;
    }
}