javascript 18位身份证校验程序

版权声明:本文为博主原创文章,随便转载,但是请注明出处。 https://blog.csdn.net/sbdx/article/details/79024234
function IdCodeCheck(code)
{
  var flag = true;
  if (!code || code.length != 18 || !/^[1-9]\d{5}((1[89]|20)\d{2})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dx]$/i.test(code))
  {
    //格式错误
    flag = false
  }
  else
  {
    code       = code.split('');
    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;
    for (var i = 0; i < 17; i++) sum += code[i] * factor[i];
    var last = parity[sum % 11];
    if (last != code[17].toUpperCase())
    {
        //校验位错误
        flag = false
    }
  }
  return flag;
}

经过大量数据测试,没有发现问题!

以上代码借鉴了其他人士的代码。

猜你喜欢

转载自blog.csdn.net/sbdx/article/details/79024234