• 组织机构代码,社会信用代码校验


    var ocodeUtil = {
      isvalidentpcode: function(code) {
       code = code.toUpperCase();
       
       var ws = [ 3, 7, 9, 10, 5, 8, 4, 2 ];
       var str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
       var reg = /^([0-9A-Z]){8}-[0-9|X]$/;
       if (!reg.test(code)) {
        return false;
       }
       var sum = 0;
       for ( var i = 0; i < 8; i++) {
        sum += str.indexOf(code.charAt(i)) * ws[i];
       }
       var c9 = 11 - (sum % 11);
       if(c9 == 10){
        c9 = 'X';
       }else if(c9 == 11){
        c9='0';
       }
       if(c9 != code.charAt(9)){
        return false;
       }else{
        return true;
       }
      },

      checkBusinessCode : function(orgCode) {
       orgCode = orgCode.toUpperCase();
       
       if (orgCode.length != 18) {
        return false;
       }
       
       // 字符集数组
       var fin_array = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
         'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M',
         'N', 'P', 'Q', 'R', 'T', 'U', 'W', 'X', 'Y' ];
       // 加权数组
       var i_array = [ 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10,
         30, 28 ];
       // 结果数组
       var val_array = [];
       // 相乘数组
       var ch_array = [];
       // Sigma
       var sigma = 0;
       // 部分IE浏览器不支持数组中的indexOf函数, 故加上此代码;
       if (!Array.indexOf) {
        Array.prototype.indexOf = function(obj) {
         for ( var i = 0; i < this.length; i++) {
          if (this[i] == obj) {
           return i;
          }
         }
         return -1;
        };
       }
       // 转换成字符集的值
       for ( var i = 0; i < 17; i++) {
        val_array[i] = fin_array.indexOf(orgCode.charAt(i));
       }
       // 校验是否包含字符集之外的字符
       for ( var i = 0; i < 17; i++) {
        if (val_array[i] == -1) {
         return false;
    //     return "包含非法字符";
        }
       }
       // 生成加权结果
       for ( var i = 0; i < 17; i++) {
        ch_array[i] = val_array[i] * i_array[i];
       }
       // 求出Sigma
       for ( var i = 0; i < 17; i++) {
        sigma = sigma + ch_array[i];
       }
       // 求出校验位
       var vali = fin_array[31 - sigma % 31];
       
       if((31 - sigma % 31) == 31){
        vali = '0';
       }
       // 查看校验码是否正确
       if (orgCode.charAt(17) == vali) {
        return true;
    //    return "正确";
       } else {
        return false;
    //    return "校验码错误: 应该为: " + vali;
       }
      },
      
     isValidBusCode : function(busCode) {
      var ret = false;
      if (busCode.length == 15) {
       var s = [];
       var p = [];
       var a = [];
       var m = 10;
       p[0] = m;
       for ( var i = 0; i < busCode.length; i++) {
        a[i] = parseInt(busCode.substring(i, i + 1), m);
        s[i] = (p[i] % (m + 1)) + a[i];
        if (0 == s[i] % m) {
         p[i + 1] = 10 * 2;
        } else {
         p[i + 1] = (s[i] % m) * 2;
        }
       }
       if (1 == (s[14] % m)) {
        ret = true;
       } else {
        ret = false;
       }
      } else {
       ret = false;
      }
      return ret;
     }
    };

  • 相关阅读:
    网络编程定时器一:使用升序链表
    木秀林网,网站专注于消息队列技术的研究
    Disruptor Ringbuffer
    Elasticsearch( 插件开发)
    Elasticsearch源码分析(一)启动流程 ModuleBuilder injector
    NativeScriptEngineService 被调用流程
    JAX-RS Resteasy
    gradle eclipse 配置
    maven repository 配置
    Eclipse中部署ES源码运行
  • 原文地址:https://www.cnblogs.com/bingrong/p/6667898.html
Copyright © 2020-2023  润新知