javascript 正则表达式验证身份证号码

本文介绍了一个用于验证中国身份证号码有效性的JavaScript函数。该函数能够检查15位和18位身份证号码的格式,并进一步验证出生日期的有效性。通过判断不同月份的天数,包括考虑闰年情况,确保了日期的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*身份证号码验证*/
function RegExpToCardID(){
	var cardID =document.getElementById("cardID").value;
	var regExpTocardID=/(^\d{15}$)|(^\d{17}[0-9x]$)/gi;
	if(regExpTocardID.test(cardID)){
		var year=cardID.substring(6,10);
		var month=cardID.substring(10,12);
		var day=cardID.substring(12,14);
		var today=new Date();
		if(year<=today.getFullYear()){
			if(month>0&&month<13){
				if(month==2){//二月
					if((year%400==0)||(year%4==0&&year%100!=0)){//闰年
						if(day>0&&day<=29){
							alert("验证通过:"+year+"年"+month+"月"+day+"日");
						}else{
							alert("闰年2月出生日格式错误");
						}
					}else{//非闰年
						if(day>0&&day<=28){
							alert("验证通过:"+year+"年"+month+"月"+day+"日");
						}else{
							alert("非闰年2月出生日格式错误");
						}
					}
				}else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
					if(day>0&&day<=31){
						alert("验证通过:"+year+"年"+month+"月"+day+"日");
					}else{
						alert("平年1、3、5、7、8、10、12月出生日格式错误");
					}
				}else{
					if(day>0&&day<=30){
						alert("验证通过:"+year+"年"+month+"月"+day+"日");
					}else{
						alert("平年4、6、9、11月出生日格式错误");
					}
				}
			}else{
				alert("出生月格式错误");
			}
		}else{
			alert("出生年格式错误");
		}
	}else{
		alert("输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值