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验证身份证有效性示例 - Python技术站

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

相关文章

  • Java使用pulsar-flink-connector读取pulsar catalog元数据代码剖析

    Java使用Pulsar-Flink-Connector读取Pulsar Catalog元数据代码剖析 简介 Pulsar-Flink-Connector是Flint消费者应用程序和Pulsar之间的桥梁。其提供了灵活且易于使用的API,使得Flint应用程序能够轻松连接和消费Pulsar消息流。本文将详细介绍如何使用Java语言的Pulsar-Flink-…

    Java 2023年6月2日
    00
  • Spring Security组件一键接入验证码登录和小程序登录的详细过程

    讲解Spring Security组件一键接入验证码登录和小程序登录的步骤如下: 1. 导入Spring Security组件 在Spring Boot项目中,我们可以很方便地通过引入依赖的方式来导入Spring Security组件。在pom.xml文件中,添加以下依赖: <dependency> <groupId>org.spri…

    Java 2023年6月3日
    00
  • java实现代码统计小程序

    首先,为了实现一个Java代码统计小程序,我们需要掌握以下几个方面的知识: Java I/O 操作:Java I/O 操作可以让我们读取和写入文件内容,包括字符流和字节流两种方式。 Java 正则表达式:正则表达式可以帮助我们识别代码中的各种语句和注释,便于代码统计。 Java 集合框架:Java 集合框架中的 List、Set 等集合类型可以帮助我们存储和…

    Java 2023年5月23日
    00
  • Spring Boot应用程序中如何使用Keycloak详解

    Spring Boot应用程序中如何使用Keycloak详解 Keycloak是一个强大的、开源、易于使用的认证和授权管理解决方案。Spring Boot提供了与Keycloak的集成,可以轻松地保护和管理您的应用程序。 本文将介绍如何在Spring Boot应用程序中快速集成Keycloak,以便您的Web应用程序能够以安全的方式使用它。 准备工作 在开始…

    Java 2023年5月20日
    00
  • 解决try-catch捕获异常信息后Spring事务失效的问题

    解决try-catch捕获异常信息后Spring事务失效的问题,需要做以下几个步骤: 1. 开启对事务的支持 将事务注解开启,可以使用在类或方法级别上使用事务注解: @Configuration @EnableTransactionManagement public class AppConfig { // … } 2. 设置事务传播属性 使用@Tran…

    Java 2023年5月25日
    00
  • Spring Data JPA注解Entity使用示例详解

    Spring Data JPA注解Entity使用示例详解 本文将详细介绍Spring Data JPA注解Entity的使用方法,包括如何定义实体类、如何使用注解配置实体类以及实现一些基本的CRUD操作。下文将通过两个示例演示Spring Data JPA注解Entity的使用方法。 示例一:定义实体类 定义实体类是Spring Data JPA的第一步,…

    Java 2023年6月2日
    00
  • spring security数据库表结构实例代码

    针对你的问题,我将提供一个完整的攻略来讲解“spring security数据库表结构实例代码”,以下是详细步骤: 1. 规划数据库表结构 首先,需要规划出数据库表结构,这是非常关键的一步。在spring security中,需要创建以下几张表: users(用户表) authorities(角色表) groups(组表) group_authorities…

    Java 2023年5月20日
    00
  • Java窗口精细全方位讲解

    Java窗口精细全方位讲解 简介 本篇攻略将完整讲解如何用Java语言创建窗口并增加各种控件,包括文本框、按钮、下拉框等等,并讲解如何实现它们的交互功能。 准备工作 在开始编程前,你需要安装Java开发工具包(JDK)和一个编译器,比如Eclipse或者IntelliJ IDEA。这里我们以Eclipse为例。 创建窗口 要创建窗口,我们需要创建一个新的Ja…

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