在前端开发中,我们经常会遇到表单校验的需求,在一些面向B端的产品中,可能还会遇到校验统一社会信用代码,今天,我来为大家分享一下用Typescript实现的统一社会信用代码的校验。
首先,我们经过查阅资料,得知统一社会信用代码的编制遵循《GB 32100-2015法人和其他组织统一社会信用代码编码规则》
我们要想校验,主要是去校验这个校验码,也就是第18位。
然后,书写成代码,如下
export function validateUnifiedSocialCreditCode(code: string): boolean {
if (code.length !== 18) {
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 < 17; i++) {
const char = code[i];
const charIndex = chars.indexOf(char);
if (charIndex === -1) {
return false;
}
sum += charIndex * weights[i];
}
const checksumIndex = (31 - (sum % 31)) % 31;
const checksumChar = chars[checksumIndex];
return code[17] === checksumChar;
}