js校验营业执照

本文介绍了15位和18位营业执照号码的校验规则。15位号码通过特定算法验证最后一位数字,而18位号码则依据统一社会信用代码的结构进行校验,包括登记管理部门代码、纳税人类别代码、主体标识码等,并给出具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

营业执照15位的校验规则



function businessLicense15(ints){
let ti = 0;
let si = 0;// pi|11+ti
let cj = 0;// (si||10==0?10:si||10)*2
let pj = 10;// pj=cj|11==0?10:cj|11
let lastNum = '';
for (let i=0;i<ints.length;i++) {
ti = parseInt(ints[i]);
si = pj + ti;
cj = (0 == si % 10 ? 10 : si % 10) * 2;
pj = cj % 11;
if (i == ints.length-1) {
//lastNum =(1 - pj < 0 ? 11 - pj : 1 - pj) % 10;
lastNum = si%10
}
}
if(lastNum==1){
return true;
}else{
return false
}
}




18位营业执照的校验规则

统一社会信用代码设计为18位,使用阿拉伯数字或英文字母表示,由五个部分组成。第一部分(第1位):为登记管理部门代码;第二部分(第2位):为等纳税人类别代码;第三部分(第3-8位):为登记管理机关行政区划码;第四部分(第9-17位):为主体标识码;第五部分(第18位):为校验码,由系统自动生成

export function businessLicense(value){
if(value.length==15){
return businessLicense15(value);
}else{
var reg = /^([159Y]{1})([1239]{1})([0-9ABCDEFGHJKLMNPQRTUWXY]{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-9ABCDEFGHJKLMNPQRTUWXY])$/;
if(!reg.test(value)){
console.log(334234);
return false;
}
var str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
var ws =[1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28];
var codes = new Array();
codes[0] = value.substr(0,value.length-1);
codes[1] = value.substr(value.length-1,value.length);
var sum = 0;
for(var i=0;i<17;i++){
sum += str.indexOf(codes[0].charAt(i)) * ws[i];
}
var c18 = 31 - (sum % 31);
if(c18 == 31){
c18 = 'Y';
}else if(c18 == 30){
c18 = '0';
}
if(str.charAt(c18) != codes[1].charAt(0)){
return false;
}
return true;
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值