JS 身份证号校验 年龄校验

 // 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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值