javascript|js验证组织机构代码

1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成。

本体代码采用系列(即分区段)顺序编码方法。校验码按照以下公式计算:
C9=11-MOD(∑Ci(i=1→8)×Wi,11)
式中: MOD——代表求余函数;
i——代表代码字符从左至右位置序号;
Ci——代表第i位上的代码字符的值(具体代码字符见附表);
C9——代表校验码;
Wi——代表第i位上的加权因子;
当C9的值为10时,校验码应用大写的拉丁字母X表示;当C9的值为11时校验码用0表示。

2.代码的表示形式
为便于人工识别,应使用一个连字符“—”分隔本体代码与校验码。机读时,连字符省略。表示形式为:
xxxxxxxx—X

3.自定义区
为满足各系统管理上的特殊需要,规定本体代码PDY00001至PDY99999为自定义区,供各系统编制内部组织机构代码使用。自定义区内编制的组织机构代码不作为个系统之间信息交换的依据。

// 组织机构代码验证 true:真 false:假

function checkOrgCode(code) {
var ws = [3, 7, 9, 10, 5, 8, 4, 2];
var str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var reg = /^([0-9A-Z]){8}-[0-9|X]$/; // /^[A-Za-z0-9]{8}-[A-Za-z0-9]{1}$/
var sum = 0;
for (var i = 0; i < 8; i++){
sum += str.indexOf(code.charAt(i)) * ws[i];
}
var c9 = 11 - (sum % 11);
c9 = c9 == 10 ? 'X' : c9
alert(c9 +" -- "+ code.charAt(9));
if (!reg.test(code) || c9 == code.charAt(9)) {
// alert("不是有效的组织机构代码!");
return false;
}else{
return true;
}
}



// 组织机构代码验证 true:真 false:假
function orgcodevalidate(value){
if(value!=""){
var values=value.split("-");
var ws = [3, 7, 9, 10, 5, 8, 4, 2];
var str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var reg = /^([0-9A-Z]){8}$/;
if (!reg.test(values[0])) {
return true;
}
var sum = 0;
for (var i = 0; i < 8; i++) {
sum += str.indexOf(values[0].charAt(i)) * ws[i];
}
var C9 = 11 - (sum % 11);
var YC9=values[1]+'';
if (C9 == 11) {
C9 = '0';
} else if (C9 == 10) {
C9 = 'X';
} else {
C9 = C9+'';
}
return YC9!=C9;
}
}

    推荐阅读