身份证校验错误

Saber 未结 1 116
shintaro
shintaro 剑童 2024-08-20 16:58

image.png框架的这个校验存在多个正确身份号无法通过的情况

1条回答
  • 2024-08-20 18:48

    在哪一行报的错,错误是什么,可重现的身份证号是什么。用这个简单的测试下看看

     validateIDCard(idCard) {
          // 检查长度和格式
          const idCardPattern = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[\dXx]$/;
          if (!idCardPattern.test(idCard)) {
            return false;
          }
    
          // 校验码计算规则
          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'];
          const code = idCard.substring(17).toUpperCase();
    
          // 计算校验码
          let sum = 0;
          for (let i = 0; i < 17; i++) {
            sum += idCard[i] * factor[i];
          }
          const checkCode = parity[sum % 11];
    
          // 验证最后一位校验码
          return checkCode === code;
        }


    0 讨论(1)
提交回复