首页 » 前端 » Javascript » 正文

JS身份证号码校验

发布者:站点默认
2017/04/24 浏览数(1,984) 分类:Javascript 评论(1)
// 是否身份证号
// 15位用正则验证,18位用校验码
// https://wapbaike.baidu.com/item/身份证校验码
String.prototype.isIdCard = function () {
	var id = this;
	var a = id.toUpperCase().split('');
	var c = '7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2'.split(',');
	var d = '10X98765432'.split('');
	var s = 0;
	var l = a.length;
	var v = a[l - 1];
	var n = /^\d{6}(18|19|20)\d{2}[01]\d[0123]\d\d{3}(\d|X|x)$/i.test(id); // 18位验证
	var f = /^\d{6}\d{2}[01]\d[0123]\d\d{3}$/i.test(id); // 15位验证
	for (var i = 0; i < l - 1; i++) {
		s += a[i] * c[i];
	}
	r = s % 11;
	r = d[r];
	return f || (n && r == v); // 通过15位正则 或者 (通过18位正则并且校验码正确)
}
console.log( '202102197012126663'.isIdCard() ); // 这是一个假的身份证号,校验码是算出来的
点击返回顶部
  1. 留言
  2. 联系方式