身份证号码校验

根据《新版外国人永久居留身份证适配性改造要点》,公司需要把代码中对身份证的校验进行优化

就文档内容可以看到需要优化的要点是:
新版永居证号码以 9 开头 + 受理地区代码+出生日期+顺序码+校验码;(共18位)
eg:932682198501010017
既往版本永居证号码 由三位国家和地区代码开头 + 地址码+顺数码+校验码;(共15位)
eg:KAZ110090123105

在这里插入图片描述

// 身份证号码验证
export function testIdCard(id) {
  // 1 "验证通过!", 0 //校验不通过 // id为身份证号码
  
  // 新 增加新版永居证号码 以9开头再加受理区域
  var format = /^(((([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4})|(([9](([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2])))\d{3}))(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/;
  var format15Foreign = /^[a-zA-Z]{3}[0-9]{4}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{2}$/;

  //号码规则校验
  if (!(format.test(id) || format15Foreign.test(id))) {
    return { 'status': 0, 'msg': '身份证号码不合规' };
  }
  //区位码校验
  if (id.length == 18) {
    //出生年月日校验  前正则限制起始年份为1900;
    var year = id.substr(6, 4),//身份证年
      month = id.substr(10, 2),//身份证月
      date = id.substr(12, 2),//身份证日
      time = Date.parse(month + '-' + date + '-' + year),//身份证日期时间戳date
      now_time = Date.parse(new Date()),//当前时间戳
      dates = (new Date(year, month, 0)).getDate();//身份证当月天数
    if (time > now_time || date > dates) {
      return { 'status': 0, 'msg': '出生日期不合规' }
    }

    //校验码判断
    var c = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  //系数
    var b = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); //校验码对照表
    var id_array = id.split("");
    var sum = 0;
    for (var k = 0; k < 17; k++) {
      sum += parseInt(id_array[k]) * parseInt(c[k]);
    }
    if (id_array[17].toUpperCase() != b[sum % 11].toUpperCase()) {
      return { 'status': 0, 'msg': '身份证校验码不合规' }
    }
  }
  return { 'status': 1, 'msg': '校验通过' }
}
// 城市代码列表  
 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: "澳门 "
// 地址码判断
([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}

// 9 开头再加上 地址码判断
([9](([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2])))\d{3}

正则可视化图片转化工具:https://c.runoob.com/front-end/7625/#!flags=&re=%5E(a%7Cb)*%3F%24
format 正则可视化图片(看不清可以自己用上分链接工具试一下)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/176162.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年约特干故城夜间演艺《万方乐奏有于阗》完美谢幕

11月19日&#xff0c;记者走进约特干故城看到演员在欢乐地跳着刀郎舞和古典舞&#xff0c;庆祝今年以来夜间演艺《万方乐奏有于阗》演出200场完美谢幕。 11月19日在约特干故城&#xff0c;演员正在表演迎宾乐舞。阿卜力克木依卜拉依木摄 当天晚上&#xff0c;城楼上旌旗猎猎&am…

Transmit v5.10.3(FTP客户端)

Transmit 5是一款由Panic开发的功能强大的FTP(文件传输协议)客户端软件&#xff0c;专为 macOS 平台设计。它提供了简单、直观的界面和丰富的功能&#xff0c;使用户能够轻松地管理和传输文件。 在文件传输和同步方面&#xff0c;Transmit 5提供了强大的文件同步功能&#xff…

18张值得收藏的高清卫星影像

这里分享的18张高清卫星影像&#xff0c;由吉林一号卫星拍摄。 原图来自长光卫星嘉宾在直播中分享的PPT演示文档。 18张高清卫星影像 吉林一号高分04A星&#xff0c;于2022年05月21日拍摄的北京紫禁城高清卫星影像。 北京紫禁城 云南昆明滇池国际会展中心高清卫星影像&…

【STM32外设系列】JW01三合一空气质量检测模块

&#x1f380; 文章作者&#xff1a;二土电子 &#x1f338; 关注公众号获取更多资料&#xff01; &#x1f438; 期待大家一起学习交流&#xff01; 文章目录 一、JW01模块简介二、数据格式介绍三、程序设计3.1 串口初始化3.2 串口接收中断服务函数3.3 数据解析函数 四、其他…

思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞

思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞 一、漏洞描述二、漏洞影响三、网络测绘四、漏洞复现1.手动复现2.自动化复现3.python源代码 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任…

OOM问题排查+Jvm优化

OOM问题排查&#xff1a; 1、top命令&#xff1a;查看cpu和内存的使用情况。 2、jstat命令&#xff1a;查看YGC和FGC情况&#xff0c;一般都是老年代不够用。导致OOM 3、jmap命令&#xff1a; 查看哪个类的实例过多,以每个类占用多少了内存。4、jstack 查看线程与线程之间的阻…

【广州华锐互动】昆虫3D虚拟动态展示:探索神奇的微观世界

在这个充满科技魅力的时代&#xff0c;我们可以通过各种方式去了解和探索自然界的奥秘。而昆虫作为地球上最为丰富多样的生物群体之一&#xff0c;其独特的生活习性和形态特征一直吸引着人们的目光。 由广州华锐互动开发的昆虫3D虚拟动态展示系统&#xff0c;成为了一种全新的科…

原始类型 vs. 对象(基本类型 vs. 引用类型)

原始类型 首先我们先看一段代码&#xff1a; let age 30; let oldAge age; age 31; console.log(age); console.log(oldAge);在 JavaScript 中&#xff0c;原始类型的赋值是通过值复制的方式进行的&#xff0c;而不会相互影响。只有对象类型的值才是通过引用复制的方式进行…

【数据结构(三)】双向链表(2)

文章目录 1. 基本概念2. 管理双向链表的思路3. 代码实现 1. 基本概念 管理单向链表的缺点分析: ①单向链表&#xff0c;查找的方向只能是一个方向&#xff0c;而双向链表可以向前或者向后查找。     ②单向链表不能自我删除&#xff0c;需要靠辅助节点 &#xff0c;而双向…

基于springboot实现在线外卖平台系统项目【项目源码】

基于springboot实现在线外卖平台管理系统演示 Java技术 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的…

AUTOSAR实战篇:基于ETAS工具链的信息安全协议栈集成指南

AUTOSAR实战: 基于ETAS工具链的信息安全协议栈集成指南 前言 小T出品,必是精品! 手把手带你集成信息安全协议栈,你值得拥有! 正文 随着汽车信息安全的不断发展与完善,其在汽车电子领域如智能驾驶(ADAS),智能座舱等方向上不断被重视起来,越来越多的Tier1,主机厂都在全面…

LeetCode:2304. 网格中的最小路径代价(C++)

目录 2304. 网格中的最小路径代价 题目描述&#xff1a; 实现代码&#xff1a; dp&#xff08;dp有很多相似的经典题目&#xff0c;比较简单&#xff0c;不再给出解析&#xff09; 2304. 网格中的最小路径代价 题目描述&#xff1a; 给你一个下标从 0 开始的整数矩阵 grid …

中国信息通信研究院发布《中国金融科技生态白皮书》(2023)

加gzh“大数据食铁兽”&#xff0c;回复“20231122”&#xff0c;获取材料完整版 导读 本白皮书是中国信息通信研究院连续第六年针对金融科技领域的跟踪研究成果&#xff0c;聚焦过去一年来国内外金融科技领域新的发展情况&#xff0c;重点分析了中国金融科技产业、技术、市…

vue3组件化开发页面之渲染函数实现

文章目录 前言一、渲染机制虚拟 DOM渲染管线 二、渲染函数基本用法声明渲染函数Vnodes 必须唯一 三、页面使用渲染函数及组件配置总结如有启发&#xff0c;可点赞收藏哟~ 前言 组件化开发是目前开发的常态 本文记录页面拆分多个不同组件模块&#xff0c;然后再基于渲染函数实现…

智能交通收费RFID读写器在不停车收费(ETC)系统中的应用

随着公路收费规模的不断扩大&#xff0c;传统的人工收费效率低下&#xff0c;收费没有监督&#xff0c;导致票款流失严重甚至还有车辆非法逃票。为了解决这些问题&#xff0c;引入了RFID等多种技术的新型的收费系统-不停车收费(ETC)系统应运而生。 电子不停车收费系统(ETC)系统…

PMP考试

一、关于准考信下载 为确保您顺利进入考场参加xxx月份考试&#xff0c;请及时登录本网站个人系统下载并打印准考信&#xff0c;准考信下载时间为xxx-xxx。如通过以上方式无法查找准考信&#xff0c;请您及时拨打所在考点老师联系电话&#xff0c;如有特殊问题&#xff0c;请发…

VUE+element可以为空不为空时只能为(正整数和0)的验证

rule{ 变量: [ { required: true, validator: validateparamPosition, trigger: blur }] } ​​​​​​​ ​​​​​​​ ​​​​​​​ var validateparamPosition (rule, value, callback) > { if (!value) { //先判断空可以过 ca…

VirtualBox+Vagrant安装虚拟机

文章目录 一、下载Virtualbox和Vagrant1、下载2、安装 二、安装虚拟机1、新建目录D:\VirtualMachine2、执行vagrant init centos/7命令&#xff0c;就会在该目录下创建Vagrantfile文件3、执行vagrant up命令4、查看当前主机分给虚拟机的网关网段5、找到D:\VirtualMachine下的Va…

涉密人员离职怎么做好安全管理?

在信息安全领域&#xff0c;涉密人员的离职安全管理具有极其重要的意义。一旦涉密人员离职&#xff0c;可能会对单位的信息安全造成威胁&#xff0c;因此必须采取有效的措施来确保涉密人员离职后的信息安全。 一、涉密人员离职安全管理的现状 目前&#xff0c;许多单位在涉密人…

从零开始安装并运行YOLOv5

从零开始安装并运行YOLOv5 该文主要实现用YOLOv5的基准检测为自己的视频片段渲染对象检测结果和边界框&#xff0c;本文大部分都是实操&#xff0c;帮助大家快速上手。 什么是YOLOv5&#xff1f; ​ yolo是一种用于对象检测的最先进的机器学习模型&#xff0c;yolo有不同的版…