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 校验身份证号真实性相关推荐

  1. 使用JS校验身份证号

    1. 中国居民身份证号码编码规则 第一.二位表示省(自治区.直辖市.特别行政区),对于地区代码. 第三.四位表示市(地级市.自治州.盟及国家直辖市所属市辖区和县的汇总码).其中,01-20,51-70 ...

  2. vue组件中校验身份证号,手机号和邮箱

    vue组件中校验身份证号,手机号和邮箱 直接上代码 一.在js文件中添加校验方式和方法 1. 身份证号码校验(说明,这个身份证校验的方式很精确,算法仔细推荐使用) export function id ...

  3. SQL 校验身份证号格式

    调用示例: SELECT  dbo.[fn_IDCardChk]('123')  /* --------------------------- 校验身份证号是否有效 成功返回1 失败返回0Jacker ...

  4. Java校验身份证号工具类

    直接上代码,该util可以校验身份证号,可以获取年龄.性别.出生日期. public class PersonIdCardUtil {/*** 省.直辖市代码表:* 11 : 北京 12 : 天津 1 ...

  5. Java身份证号脱敏、校验身份证号合法性、根据身份证号获取年龄、根据生日获取年龄

    这里写目录 身份证号编码规则 身份证号脱敏 身份证号合法性校验 根据身份证号获取年龄 根据生日日期获取年龄 根据身份证号获取年龄.生日的Map集合 身份证号编码规则 第一.二位表示省(自治区.直辖市. ...

  6. 表单校验之---校验姓名/护照正则/台湾往来通行证/校验身份证号/港澳往来通行证正则/军官证正则/检验手机号/校验银行卡号

    常用表单校验 1.校验姓名       2.护照正则      3.台湾往来通行证          4.校验身份证号         5.港澳往来通行证正则 6.军官证正则     7.检验手机号  ...

  7. JS验证身份证号地区码及最后一位校验码

    /* 参数为身份证号 返回正确校验码 */ function getjy(id) {     var arr = new Array();//分别取出身份证的前17位加入到这个数组     var a ...

  8. js验证身份证号的真实性

    身份证号码结构 组成说明 计算方法 代码验证 身份证号码结构 组成说明 公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. 前6位为地址码,以数字1-9开头,后5位为0-9的数字: 第 ...

  9. 正则表达式校验身份证号带出出生日期,年龄,性别

    身份证号码说明 居民身份证号码,正确.正式的称谓应该是"公民身份号码".根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码 ...

最新文章

  1. jenkins rec cve-2019-1003000 复现
  2. SpringBoot集成jsp(附源码)+遇到的坑
  3. 科大星云诗社动态20210210
  4. mysql基础知识点
  5. Mac笔记本Postman升级为新版本后,打开时一直转圈,无法使用
  6. MySQL — 利用命令:获取系统当前时间、打开系统服务、Mysql命令界面快速回到之前的语句
  7. win8 性能测试软件,win8系统优化软件评测
  8. php注册后面有对号错号,网络编程jQuery Ajax显示对号和错号用于验证输入验证码是否正确...
  9. html炫酷在线,10款基于HTML5/CSS3的炫酷动画
  10. 【概率论】【笔记】【@汤家凤】【数一】【第五章】
  11. python学后总结_为什么那么多自学Python的后来都放弃了,总结起来就这些原因
  12. 雨夜,谁动了你的雨伞他的心房?
  13. dnf用计算机算比例,DNF比例计算查询
  14. linux安装zookeeper集群保姆教程,包括集群启停脚本
  15. python爬取链家网实例——scrapy框架爬取-链家网的租房信息
  16. DeFi正成为了新的全球化加速器
  17. 程序员自我调侃(搞笑)
  18. excel中需要熟练掌握技能
  19. 2023届秋招进入最卷阶段!
  20. 英特尔支持虚拟化技术处理器列表

热门文章

  1. 谁是前世埋葬你的人?
  2. 【数字IC/FPGA】线性反馈移位寄存器
  3. 矩阵论——施密特正交化
  4. Proe Creo 二次开发之修改模型中的草绘模型--特征元素树
  5. 桌面分享编码技术的演变
  6. 华为笔试题答案2019-9-7笔试第一题,跳数
  7. Linux命令与dos命令对比记忆
  8. sap屠夫--成本会计的一些概念
  9. 医学图像分割——【Polyp-PVT】
  10. ubuntu 有线连接不见(网络图标不见)解决方法