外国人永久居留身份证校验18位Js版
目前按照外国人永久居留身份证技术规范测试没有发现问题
需要自取
const FOREIGNER_ID_CARD_CHECK_CODE = [ "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];function isForeignerIdCard(idCardStr) { if (idCardStr.length !== 18) { return false; } // 本体码 const a = new Array(17); // 加权因子 const weights = new Array(17); // 乘积 const product = new Array(17); const charArray = idCardStr.split(""); for (let i = 18; i > 1; i--) { a[18 - i] = charArray[18 - i] - "0"; weights[18 - i] = Math.pow(2, i - 1) % 11; product[18 - i] = a[18 - i] * weights[18 - i]; } // 乘积之和取模 const modulus = product.reduce((a, b) => a + b) % 11; const checkDigit = charArray[17] - "0"; var s1 = FOREIGNER_ID_CARD_CHECK_CODE[modulus]; var s2 = String(checkDigit); var flag = s1 === s2; debugger; // 校验码比对 return FOREIGNER_ID_CARD_CHECK_CODE[modulus] === String(checkDigit);}