开发常用 -- 校验表单 -- 各种常用组织代码的校验-正则

汇总:

//组织机构代码
function checkOrgCid(orgNum, unType){
  if(orgNum == "" || orgNum == null){
    return {data: false, msg: '请输入单位证件号码'};
  }
  // 特殊字符判断和汉字
  ///[^\u4e00-\u9fa5]/匹配中文字符,[^\x00-\xff]/匹配双字节字符
  var re = /[^\x00-\xff]/;
  if (/[#\$%\^&\*【】@!!¥?|‘;:”“'。,、?<>+=:]+/g.test(orgNum) || re.test(orgNum)) {
    return {data: false, msg: '单位证件号码不允许特殊字符或者中文字符'};
  }

  if(unType == 49){
    //统一社会信用代码
    var ret =  CheckSocialCreditCode(orgNum);
    if(!ret){
      return {data: false, msg: '请填写正确的统一社会信用代码'};
    }
  }else if(unType == 50){
    //组织机构代码
    var ret =  checkorgcode(orgNum);
    if(!ret){
      return {data: false, msg: '请填写正确的组织机构代码'};
    }
  }else if(unType == 51){
    //工商营业执照
    var ret =  isValidBusCode(orgNum);
    if(!ret){
      return {data: false, msg: '请填写正确的工商营业执照'};
    }
  }else if(unType == 60){
    //税务登记证
    var ret =  numAndupperCaseCheck(orgNum);
    if(!ret){
      return {data: false, msg: '请填写正确的税务登记证'};
    }
  }
  return {data: true, msg: ''};
}

统一社会信用代码校验规则:

//统一社会信用代码校验规则
function CheckSocialCreditCode(code) {
  code =  code.replace(/(^\s*)|(\s*$)/g,"")
  var testCode = numAndupperCaseCheck(code);
  if ((code.length != 18) || (testCode == false)) {
    return false;
  }else{
    var Ancode;//统一社会信用代码的每一个值
    var Ancodevalue;//统一社会信用代码每一个值的权重
    var total = 0;
    var weightedfactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];//加权因子
    var str = '0123456789ABCDEFGHJKLMNPQRTUWXY';//不用I、O、S、V、Z
    for (var i = 0; i < code.length - 1; i++){
      Ancode = code.substring(i, i + 1);
      Ancodevalue = str.indexOf(Ancode);
      total = total + Ancodevalue * weightedfactors[i];//权重与加权因子相乘之和
    }
    var logiccheckcode = 31 - total % 31;
    if (logiccheckcode == 31){
      logiccheckcode = 0;
    }
    var Str = "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 Array_Str = Str.split(',');
    logiccheckcode = Array_Str[logiccheckcode];
    var checkcode = code.substring(17, 18);
    if (logiccheckcode != checkcode){
      return false;
    }
    return true;
  }
}

 组织机构代码校验规则:

//组织机构代码校验
function checkorgcode(orgcode){
  orgcode =  orgcode.replace(/(^\s*)|(\s*$)/g,"");
  if(orgcode.length!=9){
    return false;
  }

  var patrn=/^[0-9A-Z]+$/;

  if(patrn.test(orgcode)==false){
    return false;
  }

  var lastpatrn=/^[0-9X]+$/;
  var checkcode=orgcode.substring(8,9);
  if(lastpatrn.test(checkcode)==false){//最后的校验为只能是0到9的数字或者大写字母X
    return false;
  }
  var ws = [3, 7, 9, 10, 5, 8, 4, 2];
  var str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  var ancode;
  var ancodevalue;
  var total=0;
  for(var i=0;i<orgcode.length-1;i++){
    ancode=orgcode.substring(i,i+1);
    ancodevalue=str.indexOf(ancode) * ws[i];
    total=total+ancodevalue;
  }
  var logiccheckcode=11-total%11;
  if(logiccheckcode==10){
    logiccheckcode='X';
  }
  if(logiccheckcode==11){
    logiccheckcode='0';
  }

  if(checkcode != logiccheckcode){
    return false;
  } else{
    return true;
  }

}

工商营业执照校验规则:

//工商营业执照
function isValidBusCode(busCode){
  busCode =  busCode.replace(/(^\s*)|(\s*$)/g,"");
  var ret=false;
  if(""==busCode || busCode.length == 0){
    return false;
  }
  var patrn = /^[0-9]+$/;
  if(!patrn.test(busCode)){
    return false;
  }
  if(busCode.length==15){
    var sum=0;
    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;
    //alert("营业执照格式不对,必须是15位数的!");
  }
  return ret;
}

税务登记校验:

/**
 * 只允许数字和大写字母
 * @param code
 * @returns {boolean}
 */
function numAndupperCaseCheck(code){
  code =  code.replace(/(^\s*)|(\s*$)/g,"");
  if(code == "" || code.length==0){
    return false;
  }
  var patrn = /^[0-9A-Z]+$/;
  return patrn.test(code);
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值