js验证身份证号,包括15和18位以及出生日期验证

本文详细介绍了如何使用JavaScript实现复杂身份证号验证,包括出生日期验证的过程与具体实现方式。

复杂的身份证号验证,包括出生日期验证

function checkCertificate(value,element){
    if(value!=""){
        var flag;
        var birDayCode = '';
        var isIDCard1 =  /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/;
        var isIDCard2 = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/;
        flag = isIDCard1.exec(value);
        if(falg==null){
            flag = isIDCard2.exec(value);
        }
        //截取身份证号中的生日
        if(value.length==15){
            birDayCode = '19' + value.substring(6,12);
        }else if(value.length==18){
            birDayCode = value.substring(6,14);
        }
        flag = checkBirthDayCode(birDayCode);
        return flag;
    }else{
        return false;
    }
}

下面进行身份证号中的出生日期的验证

function checkBirthDayCode(birDayCode){
    var check =  /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode);
    if(!check){
        return false;
    }
    var yyyy = parseInt(birDayCode.substring(0,4),10);
    var mm = parseInt(birDayCode.substring(4,6),10);
    var dd = parseInt(birDayCode.substring(6),10);
    var xdata = new Date(yyyy,mm-1,dd);
    if(xdata > new Date()){
        return false;//生日不能大于当前日期
    }else if ( ( xdata.getFullYear() == yyyy ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == dd ) ){
        return true;
    }else{
        return false;
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值