web 前端判断身份证号码是否有效
判断身份证号是否有效
检查省份代码 参考文档
华东: 上海31,江苏32,浙江33,安徽34,福建35,江西36,山东37
身份证号码说明
如果身份证号码是18位的,其中17位数字本体码和1位数字校验码组成。排列顺序从左至右依次为:6位数字地址码,8位数字出生日期码,3位数字顺序码和1位数字校验码。
地址码:常住户口所在县(市、旗、区)的行政区划代码。
顺序码:表示在同一地址码所标识的区域范围内,对同年同月同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
校验码:将身份证号码的前17位数分别乘以不同的系数:7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2
,将相乘的结果相加,再除以11并求出余数,余数是0-10这11个数字,分别对应身份证的末位:10X98765432,例如 0对应1,3对应X 。
地址码 | 生日码 | 顺序码 | 校验码 |
---|---|---|---|
510722 | 19960102 | 322 | 9 |
完整的js代码如下
export function validateIDCardNumber (value) {if (value === null || (value.length !== 15 && value.length !== 18)) { return false }const areasArr = ['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']// 检测省份代码const valueStart2 = value.substr(0, 2)if (areasArr.indexOf(valueStart2) <= -1) { return false }let year = 0let reg = ''// 身份证长度为15位的if (value.length === 15) {year = parseInt(value.substr(6, 2)) + 1900if (year % 4 === 0 || (year % 100 === 0 && year % 4 === 0)) {reg = '^[1-9][0-9]{5}[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]{3}$'} else {reg = '^[1-9][0-9]{5}[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[0-9]|2[0-8]))[0-9]{3}$'}let r = value.match(reg)return r !== null}// 身份证长度为18位的if (value.length === 18) {year = parseInt(value.substr(6, 4))if (year % 4 === 0 || (year % 100 === 0 && year % 4 === 0)) {reg = '^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71|(8[12])|91)\\d{4}(((19|20)\\d{2}(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|((19|20)\\d{2}(0[13578]|1[02])31)|((19|20)\\d{2}02(0[1-9]|1\\d|2[0-8]))|((19|20)([13579][26]|[2468][048]|0[048])0229))\\d{3}(\\d|X|x)?$'} else {reg = '^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71|(8[12])|91)\\d{4}(((19|20)\\d{2}(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|((19|20)\\d{2}(0[13578]|1[02])31)|((19|20)\\d{2}02(0[1-9]|1\\d|2[0-8]))|((19|20)([13579][26]|[2468][048]|0[048])0229))\\d{3}(\\d|X|x)?$'}let r = value.match(reg)if (r === null) {return false} else {let flag = falsefor (let i = 0; i < r.length; i++) {if (r[i] === value) {flag = truebreak}}if (flag === false) {return false}let S = parseInt(value.substr(0, 1)) * 7 + parseInt(value.substr(10, 1)) * 7 + parseInt(value.substr(1, 1)) * 9 +parseInt(value.substr(11, 1)) * 9 + parseInt(value.substr(2, 1)) * 10 + parseInt(value.substr(12, 1)) * 10 +parseInt(value.substr(3, 1)) * 5 + parseInt(value.substr(13, 1)) * 5 + parseInt(value.substr(5, 1)) * 4 +parseInt(value.substr(4, 1)) * 8 + parseInt(value.substr(14, 1)) * 8 + parseInt(value.substr(15, 1)) * 4 +parseInt(value.substr(6, 1)) * 2 + parseInt(value.substr(16, 1)) * 2 + parseInt(value.substr(7, 1)) * 1 +parseInt(value.substr(8, 1)) * 6 + parseInt(value.substr(9, 1)) * 3let Y = S % 11let M = 'F'let JYM = '10X98765432'M = JYM.substr(Y, 1)let lastStr = value.substr(17, 1)if (lastStr === 'x') {return M === 'X'} else {return M === lastStr}}}return false
}
web 前端判断身份证号码是否有效相关推荐
- 判断身份证号码的正确性源码
判断身份证号码的正确性源码 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定, '公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. ...
- Java判断身份证号码是否正确
方法如下: public static final int IDENTITYCODE_OLD = 15; // 老身份证15位public static final int IDENTITYCODE_ ...
- Java判断身份证号码
1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
- JS准确判断身份证号码
JS准确判断身份证号码 附带示意图 以及使用方法 //校验年月日专用isDate8(sDate) {if (!/^[0-9]{8}$/.test(sDate)) {return false;}var ...
- iOS判断身份证号码是否正确
①根据百度百科中身份证号码的标准实现该方法 ②该方法只能判断18位身份证,且不能判断身份证号码和姓名是否对应(要看姓名和号码是否对应,应该有大量的数据库做对比才能实现) ③直接copy这段代码,就能通 ...
- 微信小程序 判断身份证号码正确(封装成公共方法并使用)
1,在utils 文件夹的common.js 中复制粘贴以下代码 // 身份证号码验证 function identityCodeValid(code) {var city = {11: " ...
- python基础经典问题-判断身份证号码是否有效
输入一个身份证号,判断其是否有效: 若不为18位,提示"长度错误": 若前17位不为数字,提示"有无效字符": 最后一位为校验码,若错误,提示"校验码 ...
- Python 实现判断身份证号码的有效性
import redef check_id_card(id_card):errors = ['验证通过!', '身份证号码位数不对!', '身份证号码出生日期超出范围或含有非法字符!', '身份证号码 ...
- 前端js身份证号码和手机号码格式验证
//手机号码验证 function phoneNO(num) {return /^1[3|4|5|6|7|8|9][0-9]\d{8}$/.test(num); return /^(https?|ft ...
最新文章
- 大名鼎鼎的Requests库用了什么编码风格?
- Spring MVC 环境搭建(一)
- [NOIP2012提高组]国王游戏
- 用文本指导文本:基于文本的自监督可控文本生成模型
- JS事件委托的概念和作用
- 安卓学习之路之如何显示一个listview列表视图
- 防数据泄密:是否应实施“多重认证”?
- 论文解读:ACL2021 NER | 基于模板的BART命名实体识别
- VC++如何计算一段代码的执行时间
- 自动驾驶的Pipline -- 如何打造自动驾驶的数据闭环?(中)
- C/C++ 飞机订票系统
- My God,CImage裁剪图片变成黑色了
- 算法:凸多边形最优三角剖分
- Dinky 0.6.2 已发布,优化 Flink 应用体验
- 一文看懂多模态大型语言模型GPT-4
- gnuplot 两点画线
- 移动硬盘插入笔记本会后,右下角有图标显示,但是我的电脑里面不显示,导致打不开硬盘
- 北京市工作居住证官方网站js报错不能使用解决办法
- qmake:变量手册
- Web大学生网页作业成品 基于HTML+CSS+JavaScript (刘德华9页 )
热门文章
- 【车载以太网】【测试】架构及测试工具
- BUMO:BU Firework超级节点实时竞选系统
- C#如何使用skinEngine控件换肤(更换皮肤)?
- 23种设计模式分析(4):结构型模式
- 多道批处理系统与分时系统:并发
- 海康威视产品的token更新
- Seventh5: YAML syntax Ansible Playbook Ansible variables summaries and QQS | Cloud computing
- python学习实验报告(第一周)
- 宝付国际跨境知识小课堂 | 人民币外汇市场是个啥?
- 电脑维护入门 GHOST 使用方法 图解说明