复杂的身份证号验证,包括出生日期验证
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;
}
}