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的重要性我就不在这里赘述了,让我们进…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
