JS前后端实现身份证号验证代码解析

下面是“JS前后端实现身份证号验证代码解析”的完整攻略。

前言

身份证号是人们最常用的个人身份证明,因此在各个业务场景中,我们经常需要对输入的身份证号进行格式验证。本文将介绍如何使用 JavaScript 在前后端实现身份证号验证,帮助开发者更好地应对业务需求。

方案概述

实现身份证号验证的主要过程如下:

  1. 在前端通过 JavaScript 判断用户输入的身份证号是否符合规范;
  2. 将用户输入的身份证号传递至后端进行二次验证;
  3. 后端利用正则表达式和校验码规则等方式对身份证号进行验证;
  4. 返回验证结果给前端。

前端验证代码示例

我们可以在前端利用正则表达式判断用户输入的身份证号是否符合规范。下面是一个简单的代码示例:

function checkIdNumber(idNumber) {
  // 18位身份证号正则表达式验证
  var reg = /^[1-9]\d{5}(19|20)\d{2}(0\d|1[0-2])([0-2]\d|3[01])\d{3}[\dX]$/;
  if (!reg.test(idNumber)) {
    return false;
  }
  return true;
}

上述代码中,checkIdNumber 函数利用正则表达式对输入的身份证号进行验证。该正则表达式匹配的是 18 位身份证号的格式。其中,

  • ^[1-9]\d{5} 表示以非零开头的六位数字开始;
  • (19|20)\d{2} 表示出生年份的范围为 1900 到 2099 年;
  • (0\d|1[0-2])([0-2]\d|3[01]) 表示出生月份和日期的范围;
  • \d{3}[\\dX] 表示最后一位为数字或 X,用来校验身份证号的最后一位验证码。

如果输入的身份证号匹配该正则表达式,则返回true,否则返回false

示例代码中只验证了身份证号是否符合格式规范,而未校验身份证号的真实性。为了更加准确地判断身份证号的真实性,我们还需要在后端进行二次验证。

后端验证代码示例

在后端通过身份证号验证时,我们需要使用正则表达式和身份证号中的各个字段来判断其真实性。下面是一个使用 JavaScript 实现的身份证号校验函数示例:

function checkIdNumber(idNumber) {
  // 长度验证
  if (idNumber.length != 18) {
    return false;
  }

  // 地区码验证
  var areaCode = idNumber.substr(0, 2);
  var allAreaCodes = [
      "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","71","81","82","91"
  ];
  if (allAreaCodes.indexOf(areaCode) < 0) {
    return false;
  }

  // 年月日验证
  var year = parseInt(idNumber.substr(6, 4));
  var month = parseInt(idNumber.substr(10, 2));
  var day = parseInt(idNumber.substr(12, 2));
  var date = new Date(year, month - 1, day);
  if (
    date.getFullYear() != year ||
    date.getMonth() + 1 != month ||
    date.getDate() != day
  ) {
    return false;
  }

  // 校验码验证
  var checkCode = idNumber.substr(17, 1);
  var idNumberWithoutCode = idNumber.substr(0, 17);

  var weightedFactors = [
    7,
    9,
    10,
    5,
    8,
    4,
    2,
    1,
    6,
    3,
    7,
    9,
    10,
    5,
    8,
    4,
    2,
  ];
  var checkCodeValues = [
    "1",
    "0",
    "X",
    "9",
    "8",
    "7",
    "6",
    "5",
    "4",
    "3",
    "2",
  ];
  var weightedSum = 0;
  for (var i = 0; i < idNumberWithoutCode.length; i++) {
    weightedSum +=
      parseInt(idNumberWithoutCode[i]) * weightedFactors[i];
  }
  var modValue = weightedSum % 11;
  if (checkCodeValues[modValue] != checkCode) {
    return false;
  }

  return true;
}

上述代码中,首先对身份证号长度进行验证,判断其是否为 18 位。然后,对身份证号中的地区码进行验证,判断其是否为有效的行政区划代码。接下来,对身份证号的出生日期进行验证,判断其是否为有效的日期。最后,使用身份证号前 17 位数和相应的权值因子进行校验码计算,核对身份证号的校验码是否正确。

该函数通过判断身份证号各字段的真实性,实现了对身份证号真实性的校验。

结论

身份证号验证是业务中经常需要用到的功能。本文通过前后端结合的方式实现了身份证号的验证,为开发者实现该功能提供了参考。开发者可以根据业务需求,选择前端、后端或前后端结合的方式来实现身份证号验证。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS前后端实现身份证号验证代码解析 - Python技术站

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

相关文章

  • 微信小程序表单验证form提交错误提示效果

    下面将详细讲解“微信小程序表单验证form提交错误提示效果”的完整攻略。 什么是微信小程序表单验证 表单验证是网站开发中的重要一环,目的是为了让用户在填写表单时能够及时的发现并纠正错误,保证数据的准确性。同样,微信小程序中也需要进行表单验证。 微信小程序表单验证的原理与网站表单验证类似,即使用户在填写表单时有错误输入,也应该及时给予提示,防止用户在数据提交时…

    JavaScript 2023年6月10日
    00
  • 简介JavaScript中用于处理正切的Math.tan()方法

    Math.tan()是JavaScript中Math对象提供的方法之一,用于计算数字的正切值。其语法如下: Math.tan(x) 其中,x为待计算的角度,需要以弧度制传递。 具体步骤如下: 将角度转换为弧度 Math.tan()方法要求传入的参数是以弧度制表示的角度,而JavaScript中只支持以角度制来表示角度。所以我们需要先将角度转换成弧度。 con…

    JavaScript 2023年6月10日
    00
  • js实现日期显示的一些操作(实例讲解)

    下面是我为你准备的”js实现日期显示的一些操作(实例讲解)”的完整攻略。 目录 获取当前日期 获取指定日期 日期格式化 示例说明 1. 获取当前日期 要获取当前日期,需要使用JavaScript内置对象Date()。这个对象可以获取当前时间和日期。 let today = new Date(); 执行上述代码后,today变量将包含当前日期和时间。需要使用以…

    JavaScript 2023年5月27日
    00
  • html数组字符串拼接的最快方法

    HTML数组字符串拼接是Web开发中的常见任务。优化此过程可提高网页性能,提高页面响应能力和用户体验。在本文中,我将重点介绍针对HTML数组字符串拼接的最佳实践和方法。 方法一:使用模板字符串 ES6引入的模板字符串可以使用${}实现字符串替换,简化了字符串拼接的操作,同时提高了性能和代码的可读性。在HTML数组字符串拼接中,使用模板字符串可以有效地减少代码…

    JavaScript 2023年5月27日
    00
  • JS中this的4种绑定规则详解

    下面是对于“JS中this的4种绑定规则详解”的完整攻略: 1. 默认绑定规则 默认绑定规则是指,在函数调用时,若函数调用时调用点没有指定调用的对象,this会绑定在全局对象上,即window(在浏览器环境下)。 示例代码如下: function foo() { console.log(this.a); } var a = 2; foo(); // 输出2 …

    JavaScript 2023年6月10日
    00
  • Android studio 混淆+打包+验证是否成功

    下面是关于“Android studio 混淆+打包+验证是否成功”的完整攻略。 1. 什么是混淆 混淆(Obfuscation)是一种通过变更代码名称,使得代码难以理解和阅读的技术。在Android开发中,混淆可以有效的防止反编译和代码盗用。Android Studio为我们提供了混淆功能,我们可以在打包前进行混淆操作。 2. 如何进行混淆 2.1 启用混…

    JavaScript 2023年6月11日
    00
  • JavaScript 中的 parseInt() 函数详解

    JavaScript 中的 parseInt() 函数详解 什么是 parseInt() 函数? parseInt() 是 JavaScript 内置的一个函数,用于将字符串解析成整型数字。该函数的作用是从字符串中提取数字,将其转换为十进制整数。 parseInt() 函数的语法 parseInt() 函数的语法格式如下: parseInt(string, …

    JavaScript 2023年5月27日
    00
  • JavaScript与DOM组合动态创建表格实例

    下面我来详细讲解如何使用JavaScript与DOM组合动态创建表格实例。 简介 在Web开发中,表格是数据展示的常用形式之一,但是在页面中手动编写表格代码比较繁琐,因此我们可以使用JavaScript与DOM结合创建表格。 创建表格的步骤 1.创建表格元素 首先需要使用JavaScript创建表格元素,可以使用document.createElement方…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部