判断前17位算出的最后一位和用户输入的最后一位来判断身份证号码是否有效(随便乱输蒙对的概率比较小)
验证身份证格式的正则
/^\d{6}((?:19|20)((?:\d{2}(?:0[13578]|1[02])(?:0[1-9]|[12]\d|3[01]))|(?:\d{2}(?:0[13456789]|1[012])(?:0[1-9]|[12]\d|30))|(?:\d{2}02(?:0[1-9]|1\d|2[0-8]))|(?:(?:0[48]|[2468][048]|[13579][26])0229)))\d{2}(\d)[xX\d]$/
<button onclick="idcard()">计算</button>
function idcard() {
var num = $("#id").val().toString();
var arr = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var last = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];
var s = 0;
for (var i = 0; i < arr.length; i++) {
s = s + num[i] * arr[i];
}
var l = last[s % 11];//最后一位
console.log(l)
}