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 为校验位),按照以上步骤进行验证后,可得到“身份证校验位错误”的提示信息。

阅读剩余 41%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS验证身份证有效性示例 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 详解Java读取Jar中资源文件及示例代码

    下面是详细讲解「详解Java读取Jar中资源文件及示例代码」的完整攻略。 1. 了解Java读取Jar中资源文件的原理 在Java中,读取Jar中资源文件的流程通常如下: 通过ClassLoader加载Jar包。 通过ClassLoader获取资源文件的URL。 通过URL打开资源文件的流。 读取资源文件的流中的内容。 2. 如何读取Jar中的资源文件? 当…

    Java 2023年5月20日
    00
  • java异步写日志到文件中实现代码

    下面我将为您详细讲解“java异步写日志到文件中实现代码”的完整攻略,包括实现步骤、代码示例等。 实现步骤 创建一个专门的写日志的线程,并且线程中开启一个文件输出流用于写日志到文件中; 在需要写日志的地方,通过线程池将任务放到写日志的线程中去执行。 下面我们来看看具体的代码实现: 代码示例 // 创建一个写日志的类 public class LogWrite…

    Java 2023年5月19日
    00
  • Java时区转换及Date类实现原理解析

    Java时区转换及Date类实现原理解析 在Java中涉及到时间日期处理的时候,经常会涉及到时区的转换问题。本文将详细讲解Java中的时区转换方法及Date类的实现原理。 时区转换 概述 时区是地球上按照地理位置划分的区域,每个时区都有一个与协调世界时(UTC)相差的固定时间偏移量。在国际化的应用中,处理时区转换是非常重要的。Java提供了多种方式来处理时区…

    Java 2023年5月20日
    00
  • JavaCV调用百度AI实现人脸检测方法详解

    JavaCV调用百度AI实现人脸检测方法详解 简介 本文将介绍如何使用JavaCV和百度AI平台实现人脸检测。JavaCV是一个基于OpenCV和FFmpeg库的Java接口。百度AI平台是一个提供机器视觉、语音识别、自然语言处理等人工智能服务的云端平台。通过将JavaCV和百度AI平台相结合,我们可以轻松实现人脸检测功能。 步骤 1. 注册百度AI平台账号…

    Java 2023年5月20日
    00
  • 解析Java中的Field类和Method类

    解析Java中的Field类和Method类攻略 什么是Field类和Method类 Field类和Method类都是Java反射的重要组成部分。Field类代表一个类或者接口的属性(成员变量),Method类代表一个类或者接口中的方法。 使用这两个类可以在运行时获取并操作类或接口中的属性和方法信息。 如何使用Field类 在Java中,每个类都有它的属性(…

    Java 2023年5月26日
    00
  • Java利用MultipartFile实现上传多份文件的代码

    这里是关于Java利用MultipartFile实现上传多份文件的完整攻略,包含代码示例。 介绍 MultipartFile是Spring框架提供的一个文件上传接口,它提供了许多处理文件上传的方法。在Web应用程序中,我们常常需要上传文件,有时需要同时上传多个文件。本次攻略将介绍如何使用MultipartFile接口来实现上传多份文件。 实现步骤 1. 页面…

    Java 2023年5月20日
    00
  • 深入Java分布式计算的使用分析

    深入Java分布式计算的使用分析 简介 随着大数据和云计算的发展,分布式计算变得越来越重要。Java作为一种广泛使用的编程语言,也具有强大的分布式计算能力。深入学习Java分布式计算,可以帮助解决大规模数据处理和计算问题。 本文将从以下几个方面深入讲解Java分布式计算的使用: 分布式计算概念 Java分布式计算框架概述 使用示例 分布式计算概念 分布式计算…

    Java 2023年5月31日
    00
  • SpringBoot 钩子接口的实现代码

    在SpringBoot中,我们可以通过实现钩子接口(Hook Interface)来在启动应用程序或者关闭应用程序时执行一些特定的逻辑行为。例如我们可以在应用启动时预加载某些资源,或者在应用关闭时清理一些资源等。本文将为大家介绍如何实现SpringBoot钩子接口,包含以下步骤: 新建Hook Interface 首先,我们需要新建一个Hook Interf…

    Java 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部