javascript 18位身份证校验程序
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;
}
经过大量数据测试,没有发现问题!
以上代码借鉴了其他人士的代码。