身份證號碼之js驗證
//驗證身份證號碼
function checkSecondIdcard(idcard) {
idcard = idcard.toString();
//var Errors=new Array("驗證通過!","身份證號碼位數不對!","身份證號碼出生日期超出範圍或含有非法字元!","身份證號碼校驗錯誤!","身份證地區非法!");
var Errors = new Array(true, false, false, false, false);
var area = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "內蒙古",
21: "遼寧",
22: "吉林",
23: "黑龍江",
31: "上海",
32: "江蘇",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山東",
41: "河南",
42: "湖北",
43: "湖南",
44: "廣東",
45: "廣西",
46: "海南",
50: "重慶",
51: "四川",
52: "貴州",
53: "雲南",
54: "西藏",
61: "陝西",
62: "甘肅",
63: "青海",
64: "寧夏",
65: "新疆",
71: "臺灣",
81: "香港",
82: "澳門",
91: "國外"
}
var idcard, Y, JYM;
var S, M;
var idcard_array = new Array();
idcard_array = idcard.split("");
//地區檢驗
if (area[parseInt(idcard.substr(0, 2))] == null) return Errors[4];
//身份號碼位數及格式檢驗
switch (idcard.length) {
case 18:
//18 位身份號碼檢測
//出生日期的合法性檢查
//閏年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0 )) {
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//閏年出生日期的合法性正規表示式
} else {
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正規表示式
}
if (ereg.test(idcard)) {//測試出生日期的合法性
//計算校驗位
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
+ parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y, 1);//判斷校驗位
if (M == idcard_array[17]) return Errors[0]; //檢測ID的校驗位
else return Errors[3];
}
else return Errors[2];
break;
default:
return Errors[1];
break;
}
}
相關文章
- js正則驗證身份證號JS
- PHP 驗證身份證號碼PHP
- javascript身份證號碼校驗JavaScript
- JS驗證18位身份證號的正確性JS
- C++身份證號驗證C++
- 中國身份證號驗證庫
- JS校驗身份證號的合法性JS
- js驗證手機號碼JS
- swift 郵箱、密碼、手機號、身份證驗證正則Swift密碼
- Javascript使用正則驗證身份證號(簡單)JavaScript
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- 身份證號碼的正規表示式及驗證詳解(JavaScript,Regex)JavaScript
- js檢查身份證號是否正確JS
- 身份證驗證工具類
- 驗證碼---js重新整理驗證碼JS
- 驗證身份證號碼格式並且得到出生年月和性別
- js正規表示式驗證手機,郵箱,身份證JS
- excel身份證號提取年齡公式 身份證號碼提取精確年齡的公式Excel公式
- 匹配身份證號碼正規表示式
- 手機號碼驗證方法(正則驗證)
- python - 驗證身份證合法性Python
- 【PTA】查驗身份證
- 手機號碼驗證
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- PHP校驗15位和18位身份證號PHP
- 影片直播app原始碼,姓名,身份證input驗證過濾APP原始碼
- iOS身份證號識別iOS
- 用 python 製作全國身份證號驗證及查詢系統Python
- jQuery如何用正規表示式驗證手機號、身份證號、中文名稱jQuery
- 實時驗證碼技術可改進生物識別身份驗證
- 網站漏洞檢測 身份驗證碼與重要操作驗證碼安全問題網站
- js 識別身份證號的性別、生日、年齡JS
- node.js -- 身份認證Node.js
- 驗證碼機制之驗證碼重複使用
- 客戶端身份驗證客戶端
- 舊香港身份證校驗
- kafka SASL/PLAIN 身份驗證KafkaAI
- 直播app原始碼,進行身份驗證時,檢測身份證位數夠不夠APP原始碼
- C++批次核驗身份證真偽、實名認證介面、身份證識別C++