最近需要對身份證合法性進行驗證,實名驗證是不指望了,不過原來的驗證規則太過簡單,只是簡單的驗證了身份證長度,現在業務需要加強下身份證驗證規則,網上找到了不少資料,不過都不合偶的心意,無奈只好直接寫一個,代碼還是用自己的舒服哈
JavaScript驗證身份證號
<%@ 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>身份證驗證</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="身份證號合法 尾號為:"+arr3[r]; }else{ document.getElementById("show").innerHTML="非合法身份證號"; } } }else{ document.getElementById("show").innerHTML="非合法身份證號"; } } </script> </head> <body > <input id="gettext" type="text" size="30" onkeyup="checkid()"> <p id="show"></p><br> </body> </html>
根據網上的身份證的計算公式寫的一個驗證身份證號的js
第一步:將身份證號碼的第1位數字與7相乘;將身份證號碼的第2位數字與9相乘;將身份證號碼的第3位數字與10相乘;將身份證號碼的第4位數字與5相乘;將身份證號碼的第5位數字與8相乘;將身份證號碼的第6位數字與4相乘;將身份證號碼的第7位數字與2相乘;將身份證號碼的第8位數字與1相乘;將身份證號碼的第9位數字與6相乘;將身份證號碼的第10位數字與3相乘;將身份證號碼的第11位數字與7相乘;將身份證號碼的第12位數字與9相乘;將身份證號碼的第13位數字與10相乘;將身份證號碼的第14位數字與5相乘;將身份證號碼的第15位數字與8相乘;將身份證號碼的第16位數字與4相乘;將身份證號碼的第17位數字與2相乘。
第二步:將第一步身份證號碼1~17位相乘的結果求和,全部加起來。
第三步:用第二步計算出來的結果除以11,這樣就會出現余數為0,余數為1,余數為2,余數為3,余數為4,余數為5,余數為6,余數為7,余數為8,余數為9,余數為10共11種可能性。
第四步:如果余數為0,那對應的最後一位身份證的號碼為1;如果余數為1,那對應的最後一位身份證的號碼為0;如果余數為2,那對應的最後一位身份證的號碼為X;如果余數為3,那對應的最後一位身份證的號碼為9;如果余數為4,那對應的最後一位身份證的號碼為8;如果余數為5,那對應的最後一位身份證的號碼為7;如果余數為6,那對應的最後一位身份證的號碼為6;如果余數為7,那對應的最後一位身份證的號碼為5;如果余數為8,那對應的最後一位身份證的號碼為4;如果余數為9,那對應的最後一位身份證的號碼為3;如果余數為10,那對應的最後一位身份證的號碼為2。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!