您的位置:首页 > Web前端 > JavaScript

JS 身份证号校验 年龄校验

2015-06-26 10:49 501 查看
 // js 身份证号码校验

function isCnNewID(cid){  

    var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子  

    var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码  

    if(/^\d{17}\d|x$/i.test(cid)){    

       var sum = 0, idx;    

       for(var i = 0; i < cid.length - 1; i++){    

           // 对前17位数字与权值乘积求和    

           sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];    

       } 

        // 计算模(固定算法)  

        idx = sum % 11;  

        // 检验第18为是否与校验码相等  

        return arrValid[idx] == cid.substr(17, 1).toUpperCase();  

    }else{  

        return false;  

    }  

}

/**

 * 获取当前添加身份证号的出生年月

 * @param idCard

 * @return

 */

function getBirthdayFromIdCard (idCard) {  

    var birthday = "";  

    if(idCard.length == 15){  

        birthday = "19"+idCard.substr(6,6);  

    } else if(idCard.length == 18){  

        birthday = idCard.substr(6,8);  

    }  

    birthday = birthday.replace(/(.{4})(.{2})/,"$1-$2-");   

    return birthday;  

}

/**

 * 判断是否大于18岁

 * @param date

 * @return

 */

function checkAgeData(date){
var arrDate = date.split("-");
var jsNow= new Date();
var jsDate = new Date(arrDate[0],arrDate[1]-1,arrDate[2]);
nowYear= jsNow.getFullYear();    //获取完整的年份(4位,1970-????)
nowMonth=jsNow.getMonth()+1;       //获取当前月份(0-11,0代表1月)
nowDate=jsNow.getDate();        //获取当前日(1-31)

jsYear=jsDate.getFullYear();
jsMonth=jsDate.getMonth()+1;
jsDate=jsDate.getDate();

if(nowYear-jsYear<18){ //如果年份小于18,直接返回false
return false;
}else if(nowYear-jsYear==18){ //如果年份差等于18,则比较月份

if(nowMonth>jsMonth){//年份等于18时,当前月份大于出生月份
return false;

}else if(nowMonth==jsMonth){//如果月份也相等,则比较日期

if(nowDate<jsDate){ //年份等于18,月份相等时,如果当前日期小于出生日期,
return false;
}
}
}
return true;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: