js统一社会信用代码最少是15位最大18位如何校验
时间: 2024-02-20 07:58:04 浏览: 105
对于统一社会信用代码的校验,可以使用以下方法:
1. 长度验证:代码长度为15位或18位。
2. 地址码验证:前6位代表组织机构代码,需要验证是否为有效的行政区划代码。
3. 统一社会信用代码中的数字、字母和特殊符号都有对应的权重因子,需要按照规则进行加权计算。
4. 校验码验证:通过加权计算得到的结果除以31,将余数转换为对应的校验码,和最后一位进行比对,如果相同则校验通过。
以下是一个简单的JavaScript函数,可以校验统一社会信用代码的有效性:
```javascript
function validateCreditCode(code) {
if (!/^[0-9A-Z]+$/.test(code) || (code.length !== 15 && code.length !== 18)) {
return false;
}
const codes = "0123456789ABCDEFGHJKLMNPQRTUWXY";
const weights = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];
let sum = 0;
for (let i = 0; i < code.length - 1; i++) {
const index = codes.indexOf(code.charAt(i));
sum += index * weights[i];
}
const checkCode = (31 - sum % 31) === 31 ? "0" : codes.charAt(31 - sum % 31);
return code.charAt(code.length - 1) === checkCode;
}
```
这个函数会返回一个布尔值,表示输入的统一社会信用代码是否有效。
阅读全文