/*
* 功能:验证身份证是否可用,如果可用,则提取生日、性别等信息
* 参数:传入一个字符串(建议不要采用数字,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替换为身份证号码进行测试
身份证验证
最新推荐文章于 2024-01-04 11:40:29 发布