jscai
//验证身份证
export const valiIden = (code) => {
    let 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: \'国外 \'
    };
    let tip = \'\';
    let pass = true;
    //验证身份证格式(6个地区编码,8位出生日期,3位顺序号,1位校验位)
    if (code == \'\') {
        tip = \'身份证号格式错误\';
        pass = false;
    } else 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 = \'身份证号格式错误\';
        pass = false;
    } else if (!city[code.substr(0, 2)]) {
        tip = \'身份证号格式错误\';
        pass = false;
    } else {
        //18位身份证需要验证最后一位校验位
        if (code.length == 18) {
            code = code.split(\'\');
            //∑(ai×Wi)(mod 11)
            //加权因子
            let factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
            //校验位
            let parity = [1, 0, \'X\', 9, 8, 7, 6, 5, 4, 3, 2];
            let sum = 0;
            let ai = 0;
            let wi = 0;
            for (let i = 0; i < 17; i++) {
                ai = code[i];
                wi = factor[i];
                sum += ai * wi;
            }
            if (parity[sum % 11] != code[17]) {
                tip = \'身份证号格式错误\';
                pass = false;
            }
        }
    }
    return pass;
};

 

分类:

技术点:

相关文章: