javascript實現的身份證號碼合法性驗證程式碼
身份證合法性驗證可能在實際應用中較少一些,因為很少需要填寫身份證號碼,這涉及到人的隱私問題,一般在政府網站或者較為大型的網站有使用,儘管這樣,這也是一個需要掌握的技巧或者程式碼積累,下面就是一段能夠實現此功能的程式碼。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼function checkIdcard(num){ num = num.toUpperCase(); //身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最後一位是校驗位,可能為數字或字元X。 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))){ //alert('輸入的身份證號長度不對,或者號碼不符合規定!\n15位號碼應全為數字,18位號碼末位可以為數字或X。'); return false; } //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 //下面分別分析出生日期和校驗位 var len, re; len = num.length; if(len == 15) { re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); var arrSplit = num.match(re); //檢查生日日期是否正確 var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]); var bGoodDay; bGoodDay=(dtmBirth.getYear()==Number(arrSplit[2]))&&((dtmBirth.getMonth()+1)==Number(arrSplit[3]))&&(dtmBirth.getDate()==Number(arrSplit[4])); if (!bGoodDay){ //alert('輸入的身份證號裡出生日期不對!'); return false; } else{ //將15位身份證轉成18位 //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6); for(i = 0; i < 17; i ++){ nTemp += num.substr(i, 1) * arrInt[i]; } num += arrCh[nTemp % 11]; return true; } } if (len == 18){ re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/); var arrSplit = num.match(re); //檢查生日日期是否正確 var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]); var bGoodDay; bGoodDay=(dtmBirth.getFullYear()==Number(arrSplit[2]))&&((dtmBirth.getMonth()+1)==Number(arrSplit[3]))&&(dtmBirth.getDate()==Number(arrSplit[4])); if (!bGoodDay){ //alert(dtmBirth.getYear()); //alert(arrSplit[2]); //alert('輸入的身份證號裡出生日期不對!'); return false; } else { //檢驗18位身份證的校驗碼是否正確。 //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 var valnum; var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; for(i = 0; i < 17; i ++){ nTemp += num.substr(i, 1) * arrInt[i]; } valnum = arrCh[nTemp % 11]; if(valnum != num.substr(17, 1)){ //alert('18位身份證的校驗碼不正確!應該為:' + valnum); return false; } return true; } } return false; }
相關文章
- javascript身份證號碼校驗JavaScript
- PHP 驗證身份證號碼PHP
- JS校驗身份證號的合法性JS
- python - 驗證身份證合法性Python
- 身份證號碼的正規表示式及驗證詳解(JavaScript,Regex)JavaScript
- 身份證合法性校驗
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- Javascript使用正則驗證身份證號(簡單)JavaScript
- C++身份證號驗證C++
- swift 郵箱、密碼、手機號、身份證驗證正則Swift密碼
- js正則驗證身份證號JS
- 中國身份證號驗證庫
- 增強版實名認證介面-Java身份證實名認證介面程式碼-身份認證Java
- easy-captcha實現驗證碼驗證APT
- JavaScript驗證碼生成和驗證效果JavaScript
- Django實現驗證碼Django
- excel身份證號提取年齡公式 身份證號碼提取精確年齡的公式Excel公式
- 實時驗證碼技術可改進生物識別身份驗證
- 身份證真偽查詢介面、身份證實名認證一行python程式碼即可實現,實時資料Python
- 驗證身份證號碼格式並且得到出生年月和性別
- JavaScript 表單驗證程式碼例項JavaScript
- 匹配身份證號碼正規表示式
- Rust中實現JWT身份驗證RustJWT
- 手機號碼驗證
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- JS驗證18位身份證號的正確性JS
- 手機號碼驗證方法(正則驗證)
- node實現基於token的身份驗證
- 網站漏洞檢測 身份驗證碼與重要操作驗證碼安全問題網站
- web動態驗證碼的實現Web
- 影片直播app原始碼,姓名,身份證input驗證過濾APP原始碼
- js驗證手機號碼JS
- KgCaptcha驗證碼實現筆記GCAPT筆記
- java圖形驗證碼實現Java
- 提供一箇中國身份證號碼判斷的類
- PostgreSQL版的身份證號碼15位轉18位SQL
- volatile的特性程式碼驗證
- 身份證驗證工具類
- Spring Boot中的Firebase身份驗證+Firestore整合原始碼Spring BootREST原始碼