JS正则判断身份证合法化

//这个可以验证15位和18位的身份证,并且包含生日和校验位的验证
    function isIdCardNo() {   
        var tmpStr = "";
        var num = $('#idNumber').val();
        //num = num.toUpperCase();  
        //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。   
        if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))){ 
            //$.messager.alert('提示', '输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X');
            $.messager.alert('提示', '身份证号不合法');
            return false; 
        }else{
            if (num.length == 15) {
                tmpStr = num.substring(6, 12);
                tmpStr = "19" + tmpStr;
                tmpStr = tmpStr.substring(0, 4) + "-" + tmpStr.substring(4, 6) + "-" + tmpStr.substring(6);
            } else {
                tmpStr = num.substring(6, 14);
                tmpStr = tmpStr.substring(0, 4) + "-" + tmpStr.substring(4, 6) + "-" + tmpStr.substring(6);
            }
            if (isValidDate(tmpStr)) {
                $('#birthday').datebox('setValue', tmpStr);
            } else {
                $.messager.alert('提示', '身份证号不合法');
                //$('#birthday').datebox('setValue', '');
                return false;
            }
        }        
    }
    //验证日期是否合法
    function isValidDate(sText) {
        var reDate = /(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)/;
        return reDate.test(sText);
    }

相关推荐