身份證驗證

/*
* 功能:驗證身份證是否可用,如果可用,則提取生日、性別等信息
* 參數:傳入一個字符串(建議不要採用數字,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替換爲身份證號碼進行測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章