/*
* 功能:驗證身份證是否可用,如果可用,則提取生日、性別等信息
* 參數:傳入一個字符串(建議不要採用數字,18位的數字會有精確度問題)
* 返回:包含基本信息的對象
* 作者:HTML5學堂 http://www.h5course.com
*/
function regIDAllInf(str){
var str = str;
var reg = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2]\d)|(3[0-1]))((\d{4})|(\d{3}[Xx]))$/;
// 用於存儲結果
var result = {};
if (reg.test(str)) {
var sum = 0;
var arrID = str.split("");
var arrWi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var arrY = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];
for (var i = 0; i < arrWi.length; i++) {
sum += arrID[i] * arrWi[i];
};
sum %= 11;
var lastID = arrID[arrID.length - 1];
if (lastID == "X" || lastID == "x") {
lastID = 10;
};
if (arrY[sum] == lastID) {
result["check"] = true;
result["birthday"] = str.substr(6, 8);
result["cityCode"] = str.substr(0, 6);
result["gender"] = (str.substr(14, 3) % 2 == 0) ? "女" : "男";
} else {
result["check"] = false;
result["error"] = "身份證號碼輸入錯誤";
}
} else {
result["check"] = false;
result["error"] = "身份證號碼格式有誤";
}
return result;
}
console.log(regIDAllInf(str)); // 此處請將str替換爲身份證號碼進行測試
身份證驗證
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.