身份证号校验

526次阅读
没有评论

共计 357 个字符,预计需要花费 1 分钟才能阅读完成。

      function validate(code) {
        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 i = 0;

        if (!/^\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)) {
          return false;
        }

        for (i = 0; i < 17; i = i + 1) {
          sum += code.charAt(i) * factor[i];
        }

        return parity[sum % 11] === code[17].toUpperCase();
      }

按照算法,严格校验身份证。

正文完
 
评论(没有评论)