JavaScript 身份证号有效验证详解及实例代码

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

JavaScript 身份证号有效验证详解及实例代码

  2020-05-15 我要评论

最近需要对SFZ合法性进行验证,实名验证是不指望了,不过原来的验证规则太过简单,只是简单的验证了SFZ长度,现在业务需要加强下SFZ验证规则,网上找到了不少资料,不过都不合偶的心意,无奈只好直接写一个,代码还是用自己的舒服哈

JavaScript验证SFZ号

<%@ page language="java" contentType="text/html; charset=GB18030"
  pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>SFZ验证</title>
<script type="text/javascript"> 
var arr2=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
var arr3=[1,0,'X',9,8,7,6,5,4,3,2];
function checkid(){
  var t=document.getElementById("gettext").value;
  if(t.length==18){
    var arr=t.split('');
    var s;
    var reg = /^\d+$/;
    var pd=0;
    for(i=0;i<17;i++){
      if(reg.test(arr[i])){
        s=true;
        pd=arr[i]*arr2[i]+pd;
      }else{
        s=false;
        break;
      }
    }
    if(s=true){
      var r=pd%11;
      if(arr[17]==arr3[r]){
        document.getElementById("show").innerHTML="SFZ号合法  尾号为:"+arr3[r];
      }else{
        document.getElementById("show").innerHTML="非合法SFZ号";
      }
    }
    
  }else{
    document.getElementById("show").innerHTML="非合法SFZ号";
  }
}
</script>
</head>
<body >
<input id="gettext" type="text" size="30" onkeyup="checkid()">
<p id="show"></p><br>
</body>
</html>

根据网上的SFZ的计算公式写的一个验证SFZ号的js

第一步:将SFZ号码的第1位数字与7相乘;将SFZ号码的第2位数字与9相乘;将SFZ号码的第3位数字与10相乘;将SFZ号码的第4位数字与5相乘;将SFZ号码的第5位数字与8相乘;将SFZ号码的第6位数字与4相乘;将SFZ号码的第7位数字与2相乘;将SFZ号码的第8位数字与1相乘;将SFZ号码的第9位数字与6相乘;将SFZ号码的第10位数字与3相乘;将SFZ号码的第11位数字与7相乘;将SFZ号码的第12位数字与9相乘;将SFZ号码的第13位数字与10相乘;将SFZ号码的第14位数字与5相乘;将SFZ号码的第15位数字与8相乘;将SFZ号码的第16位数字与4相乘;将SFZ号码的第17位数字与2相乘。

第二步:将第一步SFZ号码1~17位相乘的结果求和,全部加起来。

第三步:用第二步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可能性。

第四步:如果余数为0,那对应的最后一位SFZ的号码为1;如果余数为1,那对应的最后一位SFZ的号码为0;如果余数为2,那对应的最后一位SFZ的号码为X;如果余数为3,那对应的最后一位SFZ的号码为9;如果余数为4,那对应的最后一位SFZ的号码为8;如果余数为5,那对应的最后一位SFZ的号码为7;如果余数为6,那对应的最后一位SFZ的号码为6;如果余数为7,那对应的最后一位SFZ的号码为5;如果余数为8,那对应的最后一位SFZ的号码为4;如果余数为9,那对应的最后一位SFZ的号码为3;如果余数为10,那对应的最后一位SFZ的号码为2。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们