JavaScript 正则表达式校验统一社会信用代码
以下是统一社会信用代码的 JavaScript 正则表达式校验代码:
function isValidUnifiedSocialCreditCode(code) {
'统一社会信用代码正则表达式'
const regex = /^[0-9ABCDEFGHJKLMNPQRTUWXY]{2}[0-9]{6}[0-9ABCDEFGHJKLMNPQRTUWXY]{10}$/;
if (!regex.test(code)) {
return false;
}
'统一社会信用代码校验码计算规则'
const weights = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];
const chars = '0123456789ABCDEFGHJKLMNPQRTUWXY';
let sum = 0;
for (let i = 0; i < code.length - 1; i++) {
const c = code.charAt(i);
const index = chars.indexOf(c);
sum += index * weights[i];
}
const mod = sum % 31;
const checkCode = chars.charAt(31 - mod);
return checkCode === code.charAt(code.length - 1);
}
使用示例:
console.log(isValidUnifiedSocialCreditCode('91310115MA1GJQDG0D')); // true
console.log(isValidUnifiedSocialCreditCode('91310115MA1GJQDG0E')); // false
原文地址: https://www.cveoy.top/t/topic/ot1u 著作权归作者所有。请勿转载和采集!