JS验证身份证有效性示例

关于 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. 校验身份证号码的合法性

接下来,我们需要对身份证号码进行校验,主要包括以下几个方面:

  1. 前两位表示所在省份,需验证是否存在;
  2. 中间八位表示出生日期,需验证是否合法;
  3. 最后一位是校验位,需验证是否正确。

具体实现代码如下:

// 验证省份
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验证身份证有效性示例

基础教程推荐