验证箱号(js)

方法一:

function cntrCheck(as_cntrno)
  {
  //var    valuex ;//= new Array[11];
  var valuex = new Array(11);
        var    valall,ii;
        var   li_ctnsn;
        var   ctnno= new Array(); 

          var mx = 0;
  var mt = 0;
  var i  = 0;
  var my ="";
  var mz =0;
  mt = 0;
  mx = 9;

        var ls_cntrno = as_cntrno;

  if (ls_cntrno.length != 11) return false;

  ctnno=my_splite(ls_cntrno);//ls_cntrno.toCharArray();
  for(ii =0;ii<=3;ii++)
  {
   //alert("aa--"+ctnno[ii].charCodeAt());
   switch (ctnno[ii].charCodeAt())
   {
    case 65:
     valuex[ii]=10 * parseInt(Math.pow(2, ii));
     
     break;
    case 66:
    case 67:
    case 68:
    case 69:
    case 70:
    case 71:
    case 72:
    case 73:
    case 74:
    case 75:
     valuex[ii] = parseInt(((parseInt(ctnno[ii].charCodeAt()) - 54) * Math.pow(2, ii)));
     break;
    case 76:
    case 77:
    case 78:
    case 79:
    case 80:
    case 81:
    case 83:
    case 84:
    case 85:
     valuex[ii]=parseInt( ((parseInt(ctnno[ii].charCodeAt()) - 53) * Math.pow(2, ii)));
     break;
    case 86:
    case 87:
    case 88:
    case 89:
    case 90:
     valuex[ii]=parseInt( ((parseInt(ctnno[ii].charCodeAt()) - 52) * Math.pow(2, ii)));
     break;
     
    default:
   } 
  }
  
   // 5-11位的数字校验
   for(ii =4;ii<=10;ii++)
   { 
    if(parseInt(ctnno[ii].charCodeAt())<48 || parseInt(ctnno[ii].charCodeAt())>57) return false;
   }  
  
   valuex[4] = parseInt(ctnno[4].charCodeAt()) *16 ; //2^4
   valuex[5] = parseInt(ctnno[5].charCodeAt()) *32 ; //2^5
   valuex[6] = parseInt(ctnno[6].charCodeAt()) *64 ; //2^6
   valuex[7] = parseInt(ctnno[7].charCodeAt()) *128; //2^7
   valuex[8] = parseInt(ctnno[8].charCodeAt()) *256; //2^8
   valuex[9]= parseInt(ctnno[9].charCodeAt())*512 ; //2^9
   valuex[10]= parseInt(ctnno[10].charCodeAt()) ; //2^10
  
   valall=valuex[1]+valuex[2]+valuex[3]+valuex[4]+valuex[5]+valuex[6]+valuex[7]+
     valuex[8]+valuex[9]+valuex[10]; 
   valall=valall%11;
   
   if (valall==10) valall=0;
   
   if (valall== valuex[10] )
   {
    if ("SNKU"==as_cntrno.substring(0,4))
    {
     alert(as_cntrno.substring(4, as_cntrno.length));
     li_ctnsn=parseFloat(as_cntrno.substring(4, as_cntrno.length));
     alert(li_ctnsn);
     if((li_ctnsn>=200000 && li_ctnsn<=200699)||(li_ctnsn>=400000 && li_ctnsn<=400149))
      return true;
     else
     {
      //System.out.println("该箱符合一般校验规则,但不符合SNKU的校验规则");
      return false;
     }
    }
    else if  ("SKLU".equals(as_cntrno.substring(0,4)))
    {
     li_ctnsn=parseFloat(as_cntrno.substring(4, as_cntrno.length));
     if((li_ctnsn>=200000 && li_ctnsn<=200699)||(li_ctnsn>=400000 && li_ctnsn<=400149))
      return true;
     else
     {
      //System.out.println("该箱符合一般校验规则,但不符合SKLU的校验规则");
      return false;
     }
    }
   }

  return true;
  }
 
         //字符串转换为字符数组

        function my_splite(str)
        {
                var str_arr = new Array();

                len = str.length;
                for (i=0;i<len;i++)
                {
                        str_arr[i] = str.substring(i, i+1);
                }

                return str_arr;

        }

 

方法二:

注:网上下载,一般性校验,个例不能("SOCU4267316" true 但此方法为false)

 function cntrCheck(as_cntrno)
  {
  var mx = 0;
  var mt = 0;
  var i  = 0;
  var my ="";
  var mz =0;
  mt = 0;
  mx = 9;

  as_cntrno = as_cntrno.toUpperCase();
  if(as_cntrno.length>0 && as_cntrno.length <10)
  {
   //alert("提单号长度不正确,请正确输入");
   return false;
  }
  reg ="[0-9]";
  
   for(i=0;i<10;i++)
   {
    my = as_cntrno.substring(mx,mx+1);
    
   /*
    if((!reg.test(my)) && (i <6) )
    {
     return false;
    }
    alert(my.charCodeAt());*/
    /*  && (my.charCodeAt()<91)*/
    if((((my.charCodeAt())<64) && (my.charCodeAt()<91)) && (i >5))
    {
     //alert("=========");
     return false;
    }
    
    //if(reg.test(my))
    if(my.match(reg))
   {
     //mz = parse(my);
    mz = parseInt(my);
    }
    else
    {
     if (my == "A")
     {
      mz = 10;
     }
     
     if((my.charCodeAt()>"A".charCodeAt())&&(my.charCodeAt()<"L".charCodeAt()))
     {
      mz = my.charCodeAt() - 54;
     }
     
     if((my.charCodeAt()>"K".charCodeAt())&&(my.charCodeAt()<"V".charCodeAt()))
     {
      mz = my.charCodeAt() - 53;
     }
     
     if((my.charCodeAt())>"U".charCodeAt())
     {
      mz = my.charCodeAt() - 52;
     }
    }
    mt = (mt + mz)*2;
    //alert(mt)
    mx = mx - 1;
   }
  
  mt = parseInt(mt / 2);
  
  my = as_cntrno.substring(10,11);
  
  if(my.charCodeAt() == 32)
  {
   //alert("错误的");
   return false;
  }
  
  //if(reg.test(my))
  if(my.match(reg))
  {
   mz = parseInt(my);
  }
  else
  {
   mz = my.charCodeAt() - 55;
  }
  
  if(mz == ((mt % 11)%10))
  {
   ib_pass = true;
   //alert("箱号通过校验");
  }
  else
  {
   ib_pass = false;
   //alert("校验失败");
  }
  
  return ib_pass;
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值