身份证号码的正则验证

手机号码,身份证号码的正则验证是我们开发中很常用到的东西,而大部分的身份证号码验证也只不过只是验证了身份证号码的长度及几个关键数字的匹配。

怎样能更加完善的验证身份证号码呢?如下代码可以进一步的提高身份证号码的验证精密度:

var cardValid = function (value) {
	var ex = /^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71|(8[12])|91)\d{4}(19|2[0-9])((\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(\d{2}(0[13578]|1[02])31)|(\d{2}02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$/;
	var pattern = new RegExp(ex);
	if(!pattern.test(value)){
		return false;
	}
	var params = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
	var checks = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];
	var id=value;
	var sum = 0;
	for (var i = 0; i < 17; i++) {
		var tmp = id.charAt(i);
		sum += params[i] * tmp;
	}
	sum %= 11;
	var check;
	if (id.charAt(17) == 'x' || id.charAt(17) == 'X') {
		check = 10;
	} else {
		check = id.charAt(17);
	}
	return check == checks[sum];
};
if(!cardValid(value)){
    alert("无效的身份证号码!");
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrui_web

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值