外国人永久居留身份证校验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);

}

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。