JS 校验身份证号真实性
if(!this.testIdNO(this.form.idNO)) {this.$toast('请输入真实身份证号');
}
testIdNO(value) {var vcity = {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: "澳门", 91: "国外"};// 判断是否为空let isEmpty = function (card) {if (/^\s*$/.test(card) === true) {return true;}}//检查号码是否符合规范,包括长度,类型 let isCardNo = function (card) {if (isEmpty(card)) {return true;}//这个代码表示身份证可以为空//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;if (reg.test(card) === false) {return false;}return true;};//取身份证前两位,校验省份 let checkProvince = function (card) {if (isEmpty(card)) {return true;}var province = card.substr(0, 2);if (vcity[province] == undefined) {return false;}return true;};//检查生日是否正确 let checkBirthday = function (card) {if (isEmpty(card)) {return true;}var len = card.length;//身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字 if (len == '15') {var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;var arr_data = card.match(re_fifteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date('19' + year + '/' + month + '/' + day);return verifyBirthday('19' + year, month, day, birthday);}//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X if (len == '18') {var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = card.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date(year + '/' + month + '/' + day);return verifyBirthday(year, month, day, birthday);}return false;};//校验日期 let verifyBirthday = function (year, month, day, birthday) {var now = new Date();var now_year = now.getFullYear();//年月日是否合理 if (birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) {//判断年份的范围(3岁到100岁之间) var time = now_year - year;if (time >= 3 && time <= 100) {return true;}return false;}return false;};//校验位的检测 let checkParity = function (card) {if (isEmpty(card)) {return true;}//15位转18位 card = changeFivteenToEighteen(card);var len = card.length;if (len == '18') {var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i, valnum;for (i = 0; i < 17; i++) {cardTemp += card.substr(i, 1) * arrInt[i];}valnum = arrCh[cardTemp % 11];if (valnum == card.substr(17, 1)) {return true;}return false;}return false;};//15位转18位身份证号 let changeFivteenToEighteen = function (card) {if (isEmpty(card)) {return true;}if (card.length == '15') {var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i;card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);for (i = 0; i < 17; i++) {cardTemp += card.substr(i, 1) * arrInt[i];}card += arrCh[cardTemp % 11];return card;}return card;};//checkCard = function () {var card = value;//校验长度,类型 if (isCardNo(card) === false) {//alert('您输入的身份证号码不正确,请重新输入');//document.getElementById('card_no').focus;return false;}//检查省份 if (checkProvince(card) === false) {return false;}//校验生日 if (checkBirthday(card) === false) {return false;}//检验位的检测 if (checkParity(card) === false) {return false;}return true;
}
https://www.cnblogs.com/zpblogs/p/11239597.html#/cnblog/works/article/11239597
JS 校验身份证号真实性相关推荐
- 使用JS校验身份证号
1. 中国居民身份证号码编码规则 第一.二位表示省(自治区.直辖市.特别行政区),对于地区代码. 第三.四位表示市(地级市.自治州.盟及国家直辖市所属市辖区和县的汇总码).其中,01-20,51-70 ...
- vue组件中校验身份证号,手机号和邮箱
vue组件中校验身份证号,手机号和邮箱 直接上代码 一.在js文件中添加校验方式和方法 1. 身份证号码校验(说明,这个身份证校验的方式很精确,算法仔细推荐使用) export function id ...
- SQL 校验身份证号格式
调用示例: SELECT dbo.[fn_IDCardChk]('123') /* --------------------------- 校验身份证号是否有效 成功返回1 失败返回0Jacker ...
- Java校验身份证号工具类
直接上代码,该util可以校验身份证号,可以获取年龄.性别.出生日期. public class PersonIdCardUtil {/*** 省.直辖市代码表:* 11 : 北京 12 : 天津 1 ...
- Java身份证号脱敏、校验身份证号合法性、根据身份证号获取年龄、根据生日获取年龄
这里写目录 身份证号编码规则 身份证号脱敏 身份证号合法性校验 根据身份证号获取年龄 根据生日日期获取年龄 根据身份证号获取年龄.生日的Map集合 身份证号编码规则 第一.二位表示省(自治区.直辖市. ...
- 表单校验之---校验姓名/护照正则/台湾往来通行证/校验身份证号/港澳往来通行证正则/军官证正则/检验手机号/校验银行卡号
常用表单校验 1.校验姓名 2.护照正则 3.台湾往来通行证 4.校验身份证号 5.港澳往来通行证正则 6.军官证正则 7.检验手机号 ...
- JS验证身份证号地区码及最后一位校验码
/* 参数为身份证号 返回正确校验码 */ function getjy(id) { var arr = new Array();//分别取出身份证的前17位加入到这个数组 var a ...
- js验证身份证号的真实性
身份证号码结构 组成说明 计算方法 代码验证 身份证号码结构 组成说明 公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. 前6位为地址码,以数字1-9开头,后5位为0-9的数字: 第 ...
- 正则表达式校验身份证号带出出生日期,年龄,性别
身份证号码说明 居民身份证号码,正确.正式的称谓应该是"公民身份号码".根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码 ...
最新文章
- jenkins rec cve-2019-1003000 复现
- SpringBoot集成jsp(附源码)+遇到的坑
- 科大星云诗社动态20210210
- mysql基础知识点
- Mac笔记本Postman升级为新版本后,打开时一直转圈,无法使用
- MySQL — 利用命令:获取系统当前时间、打开系统服务、Mysql命令界面快速回到之前的语句
- win8 性能测试软件,win8系统优化软件评测
- php注册后面有对号错号,网络编程jQuery Ajax显示对号和错号用于验证输入验证码是否正确...
- html炫酷在线,10款基于HTML5/CSS3的炫酷动画
- 【概率论】【笔记】【@汤家凤】【数一】【第五章】
- python学后总结_为什么那么多自学Python的后来都放弃了,总结起来就这些原因
- 雨夜,谁动了你的雨伞他的心房?
- dnf用计算机算比例,DNF比例计算查询
- linux安装zookeeper集群保姆教程,包括集群启停脚本
- python爬取链家网实例——scrapy框架爬取-链家网的租房信息
- DeFi正成为了新的全球化加速器
- 程序员自我调侃(搞笑)
- excel中需要熟练掌握技能
- 2023届秋招进入最卷阶段!
- 英特尔支持虚拟化技术处理器列表