主要使用正则表达式
if (value === "") {
callback(new Error("请输入组织机构代码"));
} else if (value.length != 9) {
callback(new Error("组织机构代码位数不正确"));
} else {
// var patrn = /^[0-9A-Z]+$/;
var reg = /^[0-9A-Z]+$/;
if (reg.test(value) == false) {
callback(new Error("组织机构代码只可为数字或大写拉丁字母"));
} else {
var regLast = /^[0-9X]+$/;
var lastnum = value.substring(8, 9);
if (regLast.test(lastnum) == false) {
// alert("组织机构代码最后一位只可为数字或大写拉丁字母:X");
callback(
new Error("组织机构代码最后一位只可为数字或大写拉丁字母 X")
);
} else {
var ancode;
var ancodeWeightValue;
var sum = 0;
var weightedArray = [3, 7, 9, 10, 5, 8, 4, 2]; //加权因子
var str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i = 0; i < value.length - 1; i++) {
ancode = value.substring(i, i + 1);
ancodeWeightValue = str.indexOf(ancode);
sum = sum + ancodeWeightValue * weightedArray[i];
}
var rightLastnum = 11 - (sum % 11);
if (rightLastnum == 10) rightLastnum = "X";
if (rightLastnum == 11) rightLastnum = "0";
if (lastnum != rightLastnum) {
callback(new Error("组织机构代码结构错误!"));
} else {
callback();
}
}
}
}