下面我来详细讲解一下“JS实现的验证身份证及获取地区功能示例”的完整攻略。
1. 确定需求
在开始之前,我们要先明确一下需求。这个示例需要实现两个功能:
- 验证身份证号码的有效性。
- 根据身份证号码获取身份证所属地区信息。
2. 实现身份证号码验证功能
身份证号码是一个18位数字和字母的组合,其中最后一位可能为“X”。身份证号码的前17位是区域代码和出生年月日。下面是一个实现身份证号码验证功能的示例代码:
function checkIDCard(idCard) {
if(typeof idCard !== 'string') {
return false;
}
// 身份证号码正则表达式
var regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|[Xx])$/;
if(!regex.test(idCard)) {
return false;
}
// 判断身份证号码是否符合校验规则
var idCardArray = idCard.split("");
var factorArr = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var parityBit = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
var sum = 0;
var ai = 0;
var wi = 0;
for(var i = 0; i < 17; i++) {
ai = parseInt(idCardArray[i]);
wi = factorArr[i];
sum += ai * wi;
}
var last = parityBit[sum % 11];
if(idCardArray[17].toUpperCase() !== last) {
return false;
}
return true;
}
上面的代码使用的是正则表达式验证身份证号码的格式是否符合要求。然后通过计算校验位的方式判断身份证号码的有效性。
3. 实现获取身份证地区功能
根据身份证号码的前6位,可以获取身份证所属地区的信息,下面是一个实现该功能的示例代码:
function getAreaByCode(code) {
var provinceCode = code.substring(0, 2) + "0000";
var cityCode = code.substring(0, 4) + "00";
var areaCode = code;
// 获取省份信息
var province = areaList.filter(function(item) {
return item.code === provinceCode;
});
// 获取城市信息
var city = province[0].children.filter(function(item) {
return item.code === cityCode;
});
// 获取区/县信息
var area = city[0].children.filter(function(item) {
return item.code === areaCode;
});
return province[0].name + city[0].name + area[0].name;
}
上面的代码使用的是一个包含中国行政区划信息的数组areaList
,该数组包含了省份、城市和区/县的信息。根据身份证前6位获取对应的省份、城市和区/县信息并返回即可。
4. 示例代码
下面是一个完整的示例代码,包括身份证号码验证和获取身份证地区信息两个功能:
// 身份证号码验证函数
function checkIDCard(idCard) {
if(typeof idCard !== 'string') {
return false;
}
// 身份证号码正则表达式
var regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|[Xx])$/;
if(!regex.test(idCard)) {
return false;
}
// 判断身份证号码是否符合校验规则
var idCardArray = idCard.split("");
var factorArr = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var parityBit = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
var sum = 0;
var ai = 0;
var wi = 0;
for(var i = 0; i < 17; i++) {
ai = parseInt(idCardArray[i]);
wi = factorArr[i];
sum += ai * wi;
}
var last = parityBit[sum % 11];
if(idCardArray[17].toUpperCase() !== last) {
return false;
}
return true;
}
// 获取身份证地区信息函数
function getAreaByCode(code) {
var provinceCode = code.substring(0, 2) + "0000";
var cityCode = code.substring(0, 4) + "00";
var areaCode = code;
// 获取省份信息
var province = areaList.filter(function(item) {
return item.code === provinceCode;
});
// 获取城市信息
var city = province[0].children.filter(function(item) {
return item.code === cityCode;
});
// 获取区/县信息
var area = city[0].children.filter(function(item) {
return item.code === areaCode;
});
return province[0].name + city[0].name + area[0].name;
}
// 示例代码
var idCard1 = "110101199003073413";
var idCard2 = "110101199003073414";
if(checkIDCard(idCard1)) {
console.log("身份证号码有效");
console.log("身份证所属地区:" + getAreaByCode(idCard1.substring(0, 6)));
} else {
console.log("身份证号码无效");
}
if(checkIDCard(idCard2)) {
console.log("身份证号码有效");
console.log("身份证所属地区:" + getAreaByCode(idCard2.substring(0, 6)));
} else {
console.log("身份证号码无效");
}
上面的代码中定义了两个身份证号码,分别验证它们的有效性并获取所属地区信息。可以根据需要修改身份证号码进行验证。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现的验证身份证及获取地区功能示例 - Python技术站