JS前端实现身份证号码合法性校验(校验码校验)
在做项目过程中针对自然人数据提交到后端前一般是要进行身份证的合法性校验,当身份证号输入错误以便给于用户友好的提示(也可以根据身份证号同时校验表单中性别和出生日期等),验证主要是防止无效数据入库。本文在前端使用JavaScript实现15/18位身份证的合法性校验。
JavaScript前端代码
/*** 身份证15位编码规则:dddddd yymmdd xx p dddddd:6位地区编码 yymmdd: 出生年(两位年)月日,如:910215 xx:* 顺序编码,系统产生,无法确定 p: 性别,奇数为男,偶数为女* * 身份证18位编码规则:dddddd yyyymmdd xxx y dddddd:6位地区编码 yyyymmdd:* 出生年(四位年)月日,如:19910215 xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女 y: 校验码,该位数值可通过前17位计算获得* * 前17位号码加权因子为 Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ] 验证位* Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ] 如果验证码恰好是10,为了保证身份证是十八位,那么第十八位将用X来代替* 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 ) i为身份证号码1...17 位; Y_P为校验码Y所在校验码数组位置*/
function isIdCard(idCard) {// 15位和18位身份证号码的正则表达式var regIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;// 如果通过该验证,说明身份证格式正确,但准确性还需计算if (regIdCard.test(idCard)) {if (idCard.length == 18) {var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,5, 8, 4, 2); // 将前17位加权因子保存在数组里var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2); // 这是除以11后,可能产生的11位余数、验证码,也保存成数组var idCardWiSum = 0; // 用来保存前17位各自乖以加权因子后的总和for (var i = 0; i < 17; i++) {idCardWiSum += idCard.substring(i, i + 1) * idCardWi[i];}var idCardMod = idCardWiSum % 11;// 计算出校验码所在数组的位置var idCardLast = idCard.substring(17);// 得到最后一位身份证号码// 如果等于2,则说明校验码是10,身份证号码最后一位应该是Xif (idCardMod == 2) {if (idCardLast == "X" || idCardLast == "x") {//alert("恭喜通过验证啦!");return true;} else {//alert("身份证号码错误!");return false;}} else {// 用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码if (idCardLast == idCardY[idCardMod]) {//alert("恭喜通过验证啦!");return true;} else {//alert("身份证号码错误!");return false;}}}else{return true;}} else {//alert("身份证格式不正确!");return false;}
}
相关文章:
JS前端实现身份证号码合法性校验(校验码校验)
在做项目过程中针对自然人数据提交到后端前一般是要进行身份证的合法性校验,当身份证号输入错误以便给于用户友好的提示(也可以根据身份证号同时校验表单中性别和出生日期等),验证主要是防止无效数据入库。本文在前端使用JavaScript实现15/18位身份证的合…...

操作系统 day09(线程)
线程 为什么引入线程 在没引入进程之前,系统中的各个程序只能串行的执行,比如:只能先听歌,再聊QQ。引入进程之后,各个程序可以并发执行,比如:一边听歌,一边聊QQ。但是现在QQ可以一…...

单通道低压 H 桥电机驱动芯片AT9110H 兼容L9110 马达驱动芯片
H桥直流电机驱动电路是一种用于控制直流电机运转的电路,其主要特点是可以实现正反转控制,控制电机转速和方向,同时也具有过流保护功能。 H桥电路由四个功率晶体管和一些辅助电路组成,其中两个晶体管用于控制电机正转,…...

18. 深度学习 - 从零理解神经网络
文章目录 本文目标预测趋势与关系波士顿房价预测 Hi, 你好。我是茶桁。 我们终于又开启新的篇章了,从今天这节课开始,我们会花几节课来理解一下深度学习的相关知识,了解神经网络,多层神经网络相关知识。并且,我们会尝…...

Pycharm加载项目时异常,看不到自己的项目文件
最近看到一个朋友问,他把项目导入pycharm为什么项目里的包不在项目里显示,只在projects file里显示?问题截图如下: Project里看不到自己的项目文件 只能在Project Files里看到自己的项目文件 问题解答 我也是偶然发现的这个方案…...
目标检测YOLO实战应用案例100讲-基于无人机的轻量化目标检测系统设计(续)
目录 3.2 深度神经网络处理器设计 3.2.1 卷积神经网络处理器设计思路...

大文件传输小知识 | UDP和TCP哪个传输速度快?
在网络世界中,好像有两位“传输巨头”常常被提起:UDP和TCP。它们分别代表着用户数据报协议和传输控制协议。那么它们是什么?它们有什么区别?它们在传输大文件时的速度又如何?本文将深度解析这些问题,帮助企…...

【tgcalls】Instance接口的实例类的创建
tg 里有多个版本,因此设计了版本管理的map,每次可以选择一个版本进行实例创建这样,每个客户端就可以定制开发了。tg使用了c++20创建是要传递一个描述者,里面是上下文信息 G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\Instance.cpp可以看到竟然是…...

【java:牛客每日三十题总结-3】
java:牛客每日三十题总结 总结如下 总结如下 集合相关知识点 Collection主要的子接口: List:可以存放重复内容 Set:不能存放重复内容,所有重复的内容靠hashCode()和equals()两个方法区分 Queue:队列接口 SortedSet:可以对集合中的数据进行排序 Map没有继承Collection接口&…...

区块链多链数字钱包开发
随着区块链技术的不断发展,多链数字钱包的开发逐渐成为热门领域。多链数字钱包是一种可以支持多种区块链网络的数字钱包,用户可以使用它来存储、管理和转移不同的数字资产。本文将探讨多链数字钱包的开发背景、市场需求、技术实现和未来趋势等方面。 一、…...
hive-行转列
xx...

【赠书第2期】嵌入式虚拟化技术与应用
文章目录 前言 1 背景概述 2 专家推荐 3 本书适合谁? 4 内容简介 5 书籍目录 6 权威作者团队 7 粉丝福利 前言 随着物联网设备的爆炸式增长和万物互联应用的快速发展,虚拟化技术在嵌入式系统上受到了业界越来越多的关注、重视和实际应用。嵌入式…...

如何写一篇吊炸天的竞品分析
这段时间,除了撩妹之外,最多的就是竞品分析了。最近很多临近毕业的同学也在四处应聘产品岗,而一份不错的竞品分析一定能为你的求职加分不少。于是,有着菩萨心肠天使面孔魔鬼身材的我,就来教大家怎么做一份完整的竞品分…...

校园安防监控系统升级改造方案:如何实现设备利旧上云与AI视频识别感知?
一、背景与需求分析 随着现代安防监控科技的兴起和在各行各业的广泛应用,监控摄像头成为众所周知的产品,也为人类的工作生活提供了很大的便利。由于科技的发达,监控摄像头的升级换代也日益频繁。每年都有不计其数的摄像头被拆掉闲置…...
刷题笔记day15-二叉树层序遍历
层序遍历 /*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*/import ("container/list" )func levelOrder(root *TreeNode) [][]int {// 思路1:此处肯定要使用队列result : …...
前端 JS 经典:ES6 和 CommonJs 用法
1. 概念 都是 JavaScript 模块化规范,ES6 适用于浏览器端和 Node.js,CommonJs 适用于 Node.js。 2. 导出 // ES6 export function demo(n1, n2) {return n1 n2; }// CommonJS module.exports {demo: function (n1, n2) {return n1 n2;}, }; 3. 引入 …...

MacOS升级后命令行出现xcrun: error: invalid active developer path报错信息
在Mac上用g编译cpp文件时,出现以下(类似于工具环境问题的)报错: 解决方案:重新安装最新版的MacOS Command Line Tools xcode-select --install重新尝试编译: 编译成功(忽略这个warning&…...
【Qt】QPalette
2023年11月10日,周五上午 Palette意为“调色板”。 QPalette是Qt中用于管理控件调色板(颜色方案)的类。它允许你为Qt应用程序中的控件设置不同的颜色,以满足视觉设计需求。 QPalette可以管理各种控件的颜色属性,如前…...

专门为Web应用程序提供安全保护的设备-WAF
互联网网站面临着多种威胁,包括网络钓鱼和人为的恶意攻击等。这些威胁可能会导致数据泄露、系统崩溃等严重后果。 因此,我们需要采取更多有效的措施来保护网站的安全。其中WAF(Web application firewall,Web应用防火墙࿰…...

Android Camera App启动流程解析
前言:做了7年的camera app开发,给自己一个总结,算是对camera的一次告白吧。Camera被大家誉为手机的眼睛,是现在各大手机厂商的卖点,也是各大厂商重点发力的地方。Camera的重要性我就不在这里赘述了,让我们进…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...