JS实现的验证身份证及获取地区功能示例

下面我来详细讲解一下“JS实现的验证身份证及获取地区功能示例”的完整攻略。

1. 确定需求

在开始之前,我们要先明确一下需求。这个示例需要实现两个功能:

  1. 验证身份证号码的有效性。
  2. 根据身份证号码获取身份证所属地区信息。

2. 实现身份证号码验证功能

身份证号码是一个18位数字和字母的组合,其中最后一位可能为“X”。身份证号码的前17位是区域代码和出生年月日。下面是一个实现身份证号码验证功能的示例代码:

function checkIDCard(idCard) {
  if(typeof idCard !== 'string') {
    return false;
  }

  // 身份证号码正则表达式
  var regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|[Xx])$/;

  if(!regex.test(idCard)) {
    return false;
  }

  // 判断身份证号码是否符合校验规则
  var idCardArray = idCard.split("");
  var factorArr = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
  var parityBit = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
  var sum = 0;
  var ai = 0;
  var wi = 0;

  for(var i = 0; i < 17; i++) {
    ai = parseInt(idCardArray[i]);
    wi = factorArr[i];
    sum += ai * wi;
  }

  var last = parityBit[sum % 11];

  if(idCardArray[17].toUpperCase() !== last) {
    return false;
  }

  return true;
}

上面的代码使用的是正则表达式验证身份证号码的格式是否符合要求。然后通过计算校验位的方式判断身份证号码的有效性。

3. 实现获取身份证地区功能

根据身份证号码的前6位,可以获取身份证所属地区的信息,下面是一个实现该功能的示例代码:

function getAreaByCode(code) {
  var provinceCode = code.substring(0, 2) + "0000";
  var cityCode = code.substring(0, 4) + "00";
  var areaCode = code;

  // 获取省份信息
  var province = areaList.filter(function(item) {
    return item.code === provinceCode;
  });

  // 获取城市信息
  var city = province[0].children.filter(function(item) {
    return item.code === cityCode;
  });

  // 获取区/县信息
  var area = city[0].children.filter(function(item) {
    return item.code === areaCode;
  });

  return province[0].name + city[0].name + area[0].name;
}

上面的代码使用的是一个包含中国行政区划信息的数组areaList,该数组包含了省份、城市和区/县的信息。根据身份证前6位获取对应的省份、城市和区/县信息并返回即可。

4. 示例代码

下面是一个完整的示例代码,包括身份证号码验证和获取身份证地区信息两个功能:

// 身份证号码验证函数
function checkIDCard(idCard) {
  if(typeof idCard !== 'string') {
    return false;
  }

  // 身份证号码正则表达式
  var regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|[Xx])$/;

  if(!regex.test(idCard)) {
    return false;
  }

  // 判断身份证号码是否符合校验规则
  var idCardArray = idCard.split("");
  var factorArr = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
  var parityBit = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
  var sum = 0;
  var ai = 0;
  var wi = 0;

  for(var i = 0; i < 17; i++) {
    ai = parseInt(idCardArray[i]);
    wi = factorArr[i];
    sum += ai * wi;
  }

  var last = parityBit[sum % 11];

  if(idCardArray[17].toUpperCase() !== last) {
    return false;
  }

  return true;
}

// 获取身份证地区信息函数
function getAreaByCode(code) {
  var provinceCode = code.substring(0, 2) + "0000";
  var cityCode = code.substring(0, 4) + "00";
  var areaCode = code;

  // 获取省份信息
  var province = areaList.filter(function(item) {
    return item.code === provinceCode;
  });

  // 获取城市信息
  var city = province[0].children.filter(function(item) {
    return item.code === cityCode;
  });

  // 获取区/县信息
  var area = city[0].children.filter(function(item) {
    return item.code === areaCode;
  });

  return province[0].name + city[0].name + area[0].name;
}

// 示例代码
var idCard1 = "110101199003073413";
var idCard2 = "110101199003073414";
if(checkIDCard(idCard1)) {
  console.log("身份证号码有效");
  console.log("身份证所属地区:" + getAreaByCode(idCard1.substring(0, 6)));
} else {
  console.log("身份证号码无效");
}

if(checkIDCard(idCard2)) {
  console.log("身份证号码有效");
  console.log("身份证所属地区:" + getAreaByCode(idCard2.substring(0, 6)));
} else {
  console.log("身份证号码无效");
}

上面的代码中定义了两个身份证号码,分别验证它们的有效性并获取所属地区信息。可以根据需要修改身份证号码进行验证。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现的验证身份证及获取地区功能示例 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQWidgets jqxRibbon position属性

    让我们来详细讲解一下“jQWidgets jqxRibbon position属性”的使用吧。 什么是jqxRibbon 首先,先简单介绍一下jqxRibbon。jqxRibbon是一款基于jQuery和jQWidgets的轻量级UI组件库,用于创建基于Ribbon的用户界面,可以实现快速创建富有动态效果的Ribbon界面。 position属性是什么 po…

    jquery 2023年5月11日
    00
  • jQWidgets jqxCalendar render()方法

    jQWidgets 的 jqxCalendar 组件提供了 render() 方法,用于渲染组件。本文将详细介绍 render() 方法的使用方法,包括方法概述、示例以及注意事项。 render() 方法概述 render() 方法用于渲染组件。当组件需要重新渲染时,可以使用该方法重新渲染组件。 render() 方法示例 下面是两个示例,如何使用 rend…

    jquery 2023年5月11日
    00
  • jquery下利用jsonp跨域访问实现方法

    下面是关于“jquery下利用jsonp跨域访问实现方法”的完整攻略。 什么是jsonp JSONP(JSON with Padding)是 JSON 的一种“使用模式”,可用于解决跨域问题。其中,JSON 是一种数据格式,而 JSONP 则是一种数据传输方式。 在跨域请求的情况下,浏览器中的 JavaScript 是无法直接访问其他域名下的数据的,但如果服…

    jquery 2023年5月28日
    00
  • JQuery的ON()方法支持的所有事件罗列

    JQuery是一个常用的JavaScript库,它提供了包括DOM操作、事件处理、Ajax等功能。其中,事件处理是很重要的一部分,而JQuery提供了ON()方法来绑定事件。本文将详细讲解“JQuery的ON()方法支持的所有事件”。 什么是ON()方法? ON()是JQuery提供的一种事件绑定方法,它能够绑定多个事件到一个或多个选择器上,也能够给未来动态…

    jquery 2023年5月28日
    00
  • jQuery DOM节点的遍历方法小结

    针对您提到的“jQuery DOM节点的遍历方法小结”,我可以给出一份完整攻略,内容包括什么是DOM节点、jQuery中常用的DOM节点遍历方法、相关的示例说明,以下是详细解释: DOM节点 DOM(Document Object Model),即文档对象模型,是html和xml文档的编程接口。DOM节点是html文档中的一个元素或标签,DOM节点可以用来修…

    jquery 2023年5月28日
    00
  • jQWidgets jqxDataTable getCellValue()方法

    以下是关于“jQWidgets jqxDataTable getCellValue()方法”的完整攻略,包含两个示例说明: 简介 jqxDataTable 控件的 getCellValue() 方法用于获取指定单元格的值。 完整攻略 以下是 jqxDataTable 控件 getCellValue() 方法的完整攻略: 定义 getCellValue() 方…

    jquery 2023年5月11日
    00
  • jQuery响应滚动条事件功能示例

    我来为你详细讲解“jQuery响应滚动条事件功能示例”的攻略。 1. 添加滚动条事件监听 首先,我们需要给页面的滚动区域添加一个滚动条事件监听,以便在滚动时能够进行相应的操作。使用jQuery来完成这个操作,代码如下: $(window).scroll(function() { // 滚动条滚动时的操作 }); 这里使用$(window),因为我们监听的是整…

    jquery 2023年5月28日
    00
  • jQWidgets jqxTree expandItem()方法

    以下是关于 jQWidgets jqxTree 组件中 expandItem() 方法的详细攻略。 jQWidgets jqxTree expandItem() 方法 expandItem() 方法用于展开 jQWidgets jqxTree 组件中的节点。如果节点已经展开,该方法将不执行任何操作。 语法 $(‘#tree’).jqxTree(‘expand…

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