营利事业统一编号逻辑检查

Home Home
引用 | 编辑 keigo
2005-06-05 06:19
楼主
推文 x0
刚好工作上有用到,所以找了一下公式,写了检验的script

(一) 长度:共八位,,全部为数字型态。

(二) 计算公式

1、各数字分别乘以 1,2,1,2,1,2,4,1。
2、当第 7 位数为 7 者,可取相加之倒数第二位取 0 及 1 来计算其和。
3、假如其和能被 10 整除,则表示营利事业统一编号正确

下面这是检验的script语法
复制程式
<script>
       function checkTB(sid){
              var tbNum = new Array(1,2,1,2,1,2,4,1);
              var temp = 0;
              var total = 0;
              if(sid=="") alert("请先输入欲检验的营利事业统一编号!");
              else if(!sid.match(/^d{8}$/)) alert("营利事业统一编号长度不够或格式有误!请注意营利事业统一编号格式为八码数字!");
              else{
                     for(var i = 0; i < tbNum.length ;i ++){
                            temp = sid.charAt(i) * tbNum[i];
                            total += Math.floor(temp/10)+temp%10;
                     }
                     if(total%10==0 || (total%10==9 && sid.charAt(6)==7)) alert("营利事业统一编号正确!");
                     else alert("营利事业统一编号错误!");
              }
       }
</script>


下面这是简易的网页,有兴趣的自行存成HTML档
正确的营利事业统一编号00238778
复制程式
<script>
       function checkTB(sid){
              var tbNum = new Array(1,2,1,2,1,2,4,1);
              var temp = 0;
              var total = 0;
              if(sid=="") alert("请先输入欲检验的营利事业统一编号!");
              else if(!sid.match(/^d{8}$/)) alert("营利事业统一编号长度不够或格式有误!请注意营利事业统一编号格式为八码数字!");
              else{
                     for(var i = 0; i < tbNum.length ;i ++){
                            temp = sid.charAt(i) * tbNum[i];
                            total += Math.floor(temp/10)+temp%10;
                     }
                     if(total%10==0 || (total%10==9 && sid.charAt(6)==7)) alert("营利事业统一编号正确!");
                     else alert("营利事业统一编号错误!");
              }
       }
</script>
<FORM METHOD=POST ACTION="">
<INPUT TYPE="text" NAME="TB"> <INPUT TYPE="button" onclick="checkTB(TB.value);" value="检验统编">
</FORM>


献花 x0
引用 | 编辑 t1234140
2006-11-27 15:09
1楼
  
这段程式码有错误吧?不管输入正确的还是错误的,甚至 keigo 提供的 00238778 都显示格式错误啊!

献花 x0
引用 | 编辑 herolin
2008-11-07 15:44
2楼
  
上面的是那行
else if(!sid.match(/^d{8}$/)) alert("营利事业统一编号长度不够或格式有误!请注意营利事业统一编号格式为八码数字!");
可能是贴上来不支援这个字元,  要把 (/^d{8}$/))   换成 (/^  \d{8}$/))   \请自行变成半型
其它相关验证请看我的文章
http://herolin.mine.nu/entry/is-valid-TW-company-ID

献花 x0
引用 | 编辑 lapklaman
2010-03-05 17:33
3楼
  
谢谢大大的分享

献花 x0