// Javascript校验是否是正确身份证号码
// 15位用正则验证,18位用校验码
// 关于身份证校验码详见https://baike.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]dd{3}(d|X|x)$/i.test(id); // 18位验证
var f = /^d{6}d{2}[01]d[0123]dd{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());