验证输入是否为正确的组织机构代码

主要使用正则表达式

  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();
            }
          }
        }
      }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值