营业执照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;
}
}