关于 JS 验证身份证有效性示例,我们可以采取以下步骤:
关于 JS 验证身份证有效性示例,我们可以采取以下步骤:
1. 获取身份证号码并进行格式验证
首先,我们需要获取用户输入的身份证号码,然后判断其长度是否为 18 位,并且最后一位是否为数字或字母 X(表示校验位)。具体实现代码如下:
const idCard = document.getElementById('idCard').value
// 长度验证
if (idCard.length !== 18) {
alert('身份证号码应为18位')
return
}
// 校验位验证
if (!/\d|x/i.test(idCard.charAt(17))) {
alert('身份证校验位错误')
return
}
2. 校验身份证号码的合法性
接下来,我们需要对身份证号码进行校验,主要包括以下几个方面:
- 前两位表示所在省份,需验证是否存在;
- 中间八位表示出生日期,需验证是否合法;
- 最后一位是校验位,需验证是否正确。
具体实现代码如下:
// 验证省份
const provinceCode = idCard.substring(0, 2)
const provinceList = ['11', '12', '13', '14', '15', '21', '22', '23', '31', '32', '33', '34', '35', '36', '37', '41', '42', '43', '44', '45', '46', '50', '51', '52', '53', '54', '61', '62', '63', '64', '65']
if (!provinceList.includes(provinceCode)) {
alert('身份证号码前两位不合法')
return
}
// 验证出生日期
const birthYear = idCard.substring(6, 10)
const birthMonth = idCard.substring(10, 12)
const birthDay = idCard.substring(12, 14)
const birthDate = new Date(`${birthYear}-${birthMonth}-${birthDay}`)
if (birthDate.toString() === 'Invalid Date') {
alert('身份证号码中的出生日期不合法')
return
}
// 验证校验位
const weightFactors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
const checkCodeList = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
let weightedSum = 0
for (let i = 0; i < 17; i++) {
const digit = parseInt(idCard.charAt(i))
weightedSum += digit * weightFactors[i]
}
const modResult = weightedSum % 11
const checkCode = idCard.charAt(17)
if (checkCode !== checkCodeList[modResult]) {
alert('身份证校验位错误')
return
}
alert('身份证号码合法')
以上代码中,我们通过 substring
方法获取身份证号码的特定部分,然后分别进行验证和计算,最终得到有效结果。
示例1:
假设用户输入的身份证号码为 131182198612121234,按照以上步骤进行验证后,可得到“身份证号码合法”的提示信息。
示例2:
假设用户输入的身份证号码为 13118219861212123X(其中 X 为校验位),按照以上步骤进行验证后,可得到“身份证校验位错误”的提示信息。
沃梦达教程
本文标题为:JS验证身份证有效性示例


基础教程推荐
猜你喜欢
- java 解决Eclipse挂掉问题的方法 2024-01-10
- JSP servlet实现文件上传下载和删除 2023-07-30
- SpringBoot 2.5.5整合轻量级的分布式日志标记追踪神器TLog的详细过程 2023-06-17
- 用javascript制作qq注册动态页面 2023-12-16
- Spring MVC数据绑定方式 2023-06-30
- springboot中request和response的加解密实现代码 2022-12-08
- 关于@MapperScan包扫描的坑及解决 2023-04-16
- 详解http请求中的Content-Type 2023-07-31
- SpringBoot嵌入式Web容器原理与使用介绍 2023-06-17
- jsp hibernate的分页代码第3/3页 2024-01-11