统一社会信用代码 js正则校验
以下是统一社会信用代码的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/gc3a 著作权归作者所有。请勿转载和采集!