下面我将为你详细讲解如何实现“15位和18位身份证JS校验的简单实例”。
校验15位和18位身份证简单实例
1. 判断身份证长度
在对身份证进行校验之前,需要先判断身份证长度是否合法。根据规定,15位身份证和18位身份证长度分别是15和18位。具体实现代码如下所示:
function checkIdCard(idCard) {
// 判断身份证长度
if (idCard.length != 15 && idCard.length != 18) {
console.log("身份证长度不正确");
return false;
} else {
return true;
}
}
2. 判断身份证的前17位是否是数字
身份证的前17位必须是数字,因此需要对前17位进行校验。具体实现代码如下所示:
function checkIdCard(idCard) {
// 判断身份证长度
if (idCard.length != 15 && idCard.length != 18) {
console.log("身份证长度不正确");
return false;
}
// 判断身份证前17位是否是数字
var reg = /^\d{17}$/;
if (!reg.test(idCard.substr(0, 17))) {
console.log("身份证前17位应该是数字");
return false;
} else {
return true;
}
}
示例一:校验15位身份证
下面是一个校验15位身份证的示例代码:
function checkIdCard(idCard) {
// 判断身份证长度
if (idCard.length != 15 && idCard.length != 18) {
console.log("身份证长度不正确");
return false;
}
// 判断身份证前17位是否是数字
var reg = /^\d{15}$/;
if (!reg.test(idCard)) {
console.log("15位身份证应该是数字");
return false;
} else {
return true;
}
}
var idCard = "110101821122333";
var result = checkIdCard(idCard);
if (result) {
console.log(idCard + " 是一个合法的身份证号码");
} else {
console.log(idCard + " 不是一个合法的身份证号码");
}
执行结果如下所示:
110101821122333 是一个合法的身份证号码
示例二:校验18位身份证
下面是一个校验18位身份证的示例代码:
function checkIdCard(idCard) {
// 判断身份证长度
if (idCard.length != 15 && idCard.length != 18) {
console.log("身份证长度不正确");
return false;
}
// 判断身份证前17位是否是数字
var reg = /^\d{17}$/;
if (!reg.test(idCard.substr(0, 17))) {
console.log("身份证前17位应该是数字");
return false;
}
// 判断身份证最后一位校验码是否正确
if (idCard.length == 18) {
var code = idCard.substr(17, 1); // 取出校验码
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 加权因子
var parity = [1, 0, 'x', 9, 8, 7, 6, 5, 4, 3, 2]; // 校验位对应值
var sum = 0;
for (var i = 0; i < 17; i++) {
sum += parseInt(idCard.substr(i, 1)) * factor[i];
}
var remainder = sum % 11;
if (parity[remainder] != code.toLowerCase()) {
console.log("身份证校验码不正确");
return false;
}
}
return true;
}
var idCard = "110101198211223333";
var result = checkIdCard(idCard);
if (result) {
console.log(idCard + " 是一个合法的身份证号码");
} else {
console.log(idCard + " 不是一个合法的身份证号码");
}
执行结果如下所示:
110101198211223333 是一个合法的身份证号码
以上就是关于“15位和18位身份证JS校验的简单实例”的完整攻略,希望能够帮到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:15位和18位身份证JS校验的简单实例 - Python技术站