idcard: {// 验证身份证(15位18位)validator: function (value) {// 1.传入15位或者18位身份证号码,18位号码末位可以为数字或Xvar idCard = value;// 2.身份证中的X,必须是大写的if(value.indexOf("x") !== -1){return false;}// 3.判断输入的身份证长度if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(idCard))) {return false;}// 4.验证前两位城市编码是否正确var aCity = { 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: "国外" };if (aCity[parseInt(idCard.substr(0, 2))] == null) {return false;}// 5.验证出生日期和校验位if (validId15(idCard) || validId18(idCard)) {return true;} else {return false;}// 身份证18位号码验证function validId18(str) {if (str.length != 18){return false;}//1. 出生日期验证var re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);var arrSplit = str.match(re); //检查生日日期是否正确if (arrSplit != null) {if (!YearMonthDayValidate(arrSplit[2], arrSplit[3], arrSplit[4])) {return false;}}else {return false;}//2. 校验位验证var iW = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);//加权因子var iSum = 0;for (var i = 0; i < 17; i++) {var iC = str.charAt(i);var iVal = parseInt(iC);iSum += iVal * iW[i];}var iJYM = iSum % 11;//取模var sJYM = '';//获取的模查找对应的校验码字符值if (iJYM == 0) sJYM = "1";else if (iJYM == 1) sJYM = "0";else if (iJYM == 2) sJYM = "x";else if (iJYM == 3) sJYM = "9";else if (iJYM == 4) sJYM = "8";else if (iJYM == 5) sJYM = "7";else if (iJYM == 6) sJYM = "6";else if (iJYM == 7) sJYM = "5";else if (iJYM == 8) sJYM = "4";else if (iJYM == 9) sJYM = "3";else if (iJYM == 10) sJYM = "2";var cCheck = str.charAt(17).toLowerCase();if (cCheck != sJYM) {return false;}return true;}// 身份证15位(1984-2004)身份验证function validId15(str) {if (str.length != 15) {return false;}//1. 出生日期验证var re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);var arrSplit = str.match(re); //检查生日日期是否正确if (arrSplit != null) {if (parseInt(arrSplit[2].substr(1)) > 0) {arrSplit[2] = "19" + arrSplit[2];} else {arrSplit[2] = "20" + arrSplit[2]}if (!YearMonthDayValidate(arrSplit[2], arrSplit[3], arrSplit[4])) {return false;}} else {return false;}return true;}//出生日期的年月日验证function YearMonthDayValidate(year, month, day) {year = parseInt(year); //年month = parseInt(month);//月day = parseInt(day);//日//判断年,月,日是否为空if (isNaN(year) || isNaN(month) || isNaN(day)) {return false;}//判断月是否是在1-12月之间if (month < 1 || month > 12) {return false;}//返回当月的最后一天var date = new Date(year, month, 0);//判断是否超过天数范围if (day < 1 || day > date.getDate()) {return false;}return true;}},message: '身份证号码格式不正确'}

身份证号码js校验(15位18位)相关推荐

  1. 【JavaScript】身份证号码合规性校验(支持18位、15位)

    [JavaScript]身份号码(同时支持18位号码.15位号码)合规性校验 一.身份证号码校验 这个方法共分为4个部分,分别对身份证号码的格式和长度.前2位省份编码.出生日期.18位号码的校验码进行 ...

  2. Java身份证号码严格验证(第18位校验码算法实现)

    /*** 身份证号码的格式:610821-20061222-612-X 由18位数字组成:前6位为地址码,第7至14位为出生日期码,第15至17位为顺序码,* 第18位为校验码.检验码分别是0-10共 ...

  3. js根据15,18位身份证号获取生日与性别

    15位身份证号:第6.7位为年份,8.9位为月份,10.11为日.最后一位为性别,男为奇数,女为偶数.  18位身份证号:第6.7.8.9位为年份,10.11位为月份,12.13为日.最后一位为性别, ...

  4. 身份证验证信息15位或18位

    一.身份证号码的结构和表示形式 1.号码的结构 根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从 ...

  5. 15位或18位长度身份证号码JS验证

    免责声明:身份证号为随机组合而成,不会涉及任何隐私泄密问题,也非现实生活中真实的身份证号码:身份证号码所属年龄均为18岁以上,均已通过校验. var IdNum1 = "3205831986 ...

  6. 自动转换15位身份证号码位18位

     功能:将15的身份证号升为18位(根据GB 11643-1999)  参数:原来的号码(15位)  返回:升位后的18位号码  用法:=IDCODE(a1)  (假设A1放的是原15位号码) 关于身 ...

  7. java身份证号码正则表达式校验(含最后一位的校验值规则)

    这里是python版本的: https://yanwenjing.blog.csdn.net/article/details/108210623 请仔细阅读注释 点击这里下载判断身份证号码的小工具 身 ...

  8. python身份证号码正则表达式校验(含最后一位的校验值规则)

    这里是java版本的:https://yanwenjing.blog.csdn.net/article/details/76066985 请仔细阅读注释 点击这里下载判断身份证号码的小工具 身份证号码 ...

  9. HTML 传输 字符转换 进制转换 15位 18位 时间戳 转换

    <h1>中国</h1> ######################################## HTML字符实体 格式:&#ASCII码十进制数; <h ...

最新文章

  1. 设置linux初始root密码
  2. zabbix-proxy3.0.4编译安装
  3. 利用序列化进行文件读写
  4. 这个行业人才紧缺,就业率超高!未来大有可为!
  5. notepad 配置python_Notepad++配置Python开发环境的图文详解
  6. Spring Boot 在Gradle构建中使用Log4j日志
  7. springboot和vue data数据为空_常见数据结构的 Python 实现(建议收藏)
  8. 数组的最长递减子序列java_47.创新工场: 求一个数组的最长递减子序列 | 学步园...
  9. 解决无法删除文件:无法读取源文件或磁盘
  10. 图片如何无损放大?图片放大不失真的神器
  11. NoSQLBooster操作Mongodb的基本使用。
  12. phpword模板替换并插入表格
  13. 疯狂的java 目录,疯狂创客圈 JAVA死磕系列 总目录
  14. Unity下SpriteSheet 使用
  15. Opcode缓存介绍
  16. linux脚本判断文件属性,linux的shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断...
  17. 快递空运材积大于重量的教训
  18. ssm-诗词网站系统的设计与实现毕业设计(附源码、运行环境)
  19. 代号X8,小度智能屏的破壁行动
  20. android11.0 12.0Launcher3修改某个app icon的图标

热门文章

  1. IDEA报错:The injection point has the following annotations:....
  2. 【BIT数据库实验】openGauss数据库实验一:建立数据库
  3. 51nod 1596 搬货物 (二进制)
  4. Vancl陈年:京东当当图书大战打得还不够惨烈
  5. games101——作业6
  6. org.apache.catalina.LifecycleException: Failed to start component
  7. iOS 百度地图的坑
  8. Java版AVG游戏开发入门[0]——游戏模式转换中的事件交互
  9. dedecms+5.7+is+php,织梦DedeCms 5.7全站去版权去广告方法(含后台)
  10. CTU Open Contest 2019