wangyuxue
// 判断身份证号格式以及年龄
export function authenticationAccount(idNum) {
  const 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 isRight = true;
  let sex = \'\';
  let age = 0;
  let code = [];
  if (idNum.length !== 18) {
    tip = \'身份证号格式错误\';
    isRight = false;
  } else if (!city[idNum.substr(0, 2)]) {
    tip = \'地址编码错误\';
    isRight = false;
  } else {
    // 18位身份证需要验证最后一位校验位
    code = idNum.split(\'\');
    // ∑(ai×Wi)(mod 11)
    // 加权因子
    const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    // 校验位
    const 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;
    }
    // var last = parity[sum % 11];
    if (parity[sum % 11].toString() !== code[17].toString()) {
      tip = \'校验位错误\';
      isRight = false;
    }

    if (isRight) {
      // 身份证号解析
      const codeStr = idNum.toString();
      if (parseInt(codeStr.substr(16, 1), 10) % 2 === 1) {
        sex = \'\';
      } else {
        sex = \'\';
      }
      // 获取年龄
      const myDate = new Date();
      const month = myDate.getMonth() + 1;
      const day = myDate.getDate();
      age = myDate.getFullYear() - codeStr.substring(6, 10) - 1;
      const codeMonth = parseInt(codeStr.substring(10, 12), 10);
      const codeDay = parseInt(codeStr.substring(12, 14), 10);
      if (codeMonth < month || (codeMonth === month && codeDay <= day)) {
        age++;
      }
    }
  }
  return {
    isRight,
    age,
    sex,
    tip,
  };
}

 

分类:

技术点:

相关文章:

  • 2021-08-04
  • 2022-12-23
  • 2021-09-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-25
  • 2022-12-23
  • 2022-01-26
  • 2021-12-18
  • 2022-12-23
  • 2022-01-15
相关资源
相似解决方案