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

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

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;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值