快捷搜索:

JS身份证信息验证正则表达式,正则表达式截取身份证号码加密的方法

2019-11-13 09:57栏目:关于澳门金莎
TAG:

  2、地址码(前六人数卡塔尔
    表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/T2260的明确实施。

直白上代码:

var area = { 
        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: "国外" 
      } 

  相当多时候我们都是经过生龙活虎组正则表达式来判断客商输入的居民身份证是或不是合法,这在用正则表达式判定此前,你对居民身份证号的结合有稍许掌握吗?上边包车型地铁话说叁个身份ID号里面富含了不怎么的消息:

    表示在一直以来地址码所标志的区域限定内,对同龄、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男子,偶数分配给女人。

var Errors = new Array("验证通过!", "居民身份证号码位数不对!", "身份证编号出生日期超过范围或含有不法字符!", "身份ID号码校验错误!", "身份ID地区地下!");              

在顾客注册页面有些须要必要的可比严峻,要求对居民身份证注明是还是不是合法,通过此效率严厉此系统软件,进而过滤到不菲水客。上边就此达成方式给大家疏解下。

function isCardID(sId){ 
  var iSum=0 ;
  var info="" ;
  if(!/^d{17}(d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误"; 
  sId=sId.replace(/x$/i,"a"); 
  if(aCity[parseInt(sId.substr(0,2))]==null) return "你的身份证地区非法"; 
  sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); 
  var d=new Date(sBirthday.replace(/-/g,"/")) ;
  if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "身份证上的出生日期非法"; 
  for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
  if(iSum%11!=1) return "你输入的身份证号非法"; 
  //aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女");//此次还可以判断出输入的身份证号的人性别
  return true;
} 
function checkId(idcard) { 
      var Errors = new Array("验证通过!", "身份证号码位数不对!", "身份证号码出生日期超出范围或含有非法字符!", "身份证号码校验错误!", "身份证地区非法!"); 
      var area = { 
        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: "国外" 
      } 
      var retflag = false; 
      var idcard, Y, JYM; 
      var S, M; 
      var idcard_array = new Array(); 
      idcard_array = idcard.split(""); 
      //地区检验 
      if (area[parseInt(idcard.substr(0, 2))] == null) return Errors[4]; 
      //身份号码位数及格式检验 
      switch (idcard.length) { 
        case 15: 
          if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) { 
            ereg = /^[1-9][0-9]{5}19[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 { 
            ereg = /^[1-9][0-9]{5}19[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}$/; //测试出生日期的合法性 
          } 
          if (ereg.test(idcard)) { 
            return Errors[0]; 
          } 
          else { 
            return Errors[2]; 
          } 
          break; 
        case 18: 
          if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) { 
            ereg = /^[1-9][0-9]{5}(19|20)[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}[0-9Xx]$/; //闰年出生日期的合法性正则表达式 
          } else { 
            ereg = /^[1-9][0-9]{5}(19|20)[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}[0-9Xx]$/; //平年出生日期的合法性正则表达式 
          } 
          if (ereg.test(idcard)) { //测试出生日期的合法性 
            //计算校验位 
            S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3; 
            Y = S % 11; 
            M = "F"; 
            JYM = "10X98765432"; 
            M = JYM.substr(Y, 1); //判断校验位 
            if (M == idcard_array[17]) return Errors[0]; //检测ID的校验位 
            else return Errors[3]; 
          } else return Errors[2]; 
          break; 
        default: 
          return Errors[1]; 
          break; 
      } 
    }; 

  1、定义多个全国地方的目的

  4、顺序码(第十陆个人至十八位卡塔尔

    公民身份号码是特色组合码,由十陆位数字本体码和一个人校验码组成。排列顺序从左至右依次为:八个人数字地址码,伍个人数字出华诞期码,二个人数字顺序码和一人数字校验码。

    作为尾号的校验码,是由号码编写制定单位按统风姿罗曼蒂克的公式总计出来的,假如某个人的尾号是0-9,都不会现身X,但假设尾号是10,那么就得用X来代表,因为假如用10做尾号,那么 这厮的身份ID就改成了17个人。X是加拉加斯数字的10,用X来顶替10,能够保证平民百姓的居民身份证切合国标。

    公民身份号码是特色组合码,由17位数字本体码和一人校验码组成。排列顺序从左至右依次为:六人数字地址码,八人数字出寿辰期码,肆位数字顺序码和一人数字校验码。

率先步,编写报错法则:

  4、顺序码(第十七个人至十六人卡塔尔     表示在平等地址码所标志的区域限量内,对同龄、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女子。

  3、出破壳日期码(第陆位至17个人卡塔 尔(英语:State of Qatar)

    表示编码对象出生的年、月、日,按gb/T7408的显著实践,年、月、日代码之间不用分隔符。

  1、号码的布局
    公民身份号码是特色组合码,由十多人数字本体码和一位校验码组成。排列顺序从左至右依次为:五个人数字地址码,六人数字出生辰期码,四个人数字顺序码和一人数字校验码。

总结

下一场初阶步向正题:

  在通晓居民身份证号结构组成各部分的意思后,咱们最早步入正题:

  5、校验码(第14位数卡塔 尔(英语:State of Qatar)

    表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/T2260的明确试行。

您恐怕感兴趣的篇章:

  • JS正则表明式完美兑现居民身份证校验功效
  • JS使用正则表达式验证身份ID号码
  • JS身份证音讯认证正则表明式
  • JS嗤之以鼻轻易正则表明式验证成效小结【手提式有线电话机,地址,公司税号,金额,身份ID等】
  • JavaScript正则表达式验证居民身份证号码是还是不是合法(三种办法)
  • JavaScript+Regex 居民身份证编号的正则表达式及评释详细明白

    表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/T2260的明确实践。

    作为尾号的校验码,是由号码编写制定单位按统后生可畏的公式总计出来的,若是某个人的尾号是0-9,都不会现身X,但若是尾号是10,那么就得用X来替代,因为生龙活虎旦用10做尾号,那么 此人的身份ID就改为了贰10个人。X是埃及开罗数字的10,用X来替代10,可以保障人民的身份ID切合国标。

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:"国外"}
  2、正则表明式推断

  1、号码的结构

  1、号码的组织

  5、校验码(第17个人数卡塔尔国

上面意气风发段轻便的代码给大家介绍正则表明式截取身份ID号码加密的法子,具体代码如下所示:

switch (idcard.length) { 
        case 15: 
          if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) { 
            ereg = /^[1-9][0-9]{5}19[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 { 
            ereg = /^[1-9][0-9]{5}19[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}$/; //测试出生日期的合法性 
          } 
          if (ereg.test(idcard)) { 
            return Errors[0]; 
          } 
          else { 
            return Errors[2]; 
          } 
          break; 
        case 18: 
          if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) { 
            ereg = /^[1-9][0-9]{5}(19|20)[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}[0-9Xx]$/; //闰年出生日期的合法性正则表达式 
          } else { 
            ereg = /^[1-9][0-9]{5}(19|20)[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}[0-9Xx]$/; //平年出生日期的合法性正则表达式 
          } 
          if (ereg.test(idcard)) { //测试出生日期的合法性 
            //计算校验位 
            S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3; 
            Y = S % 11; 
            M = "F"; 
            JYM = "10X98765432"; 
            M = JYM.substr(Y, 1); //判断校验位 
            if (M == idcard_array[17]) return Errors[0]; //检测ID的校验位 
            else return Errors[3]; 
          } else return Errors[2]; 
          break; 
        default: 
          return Errors[1]; 
          break; 
      } 
function isCardID(sId){ 
  var iSum=0 ;
  var info="" ;
  if(!/^d{17}(d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误"; 
  sId=sId.replace(/x$/i,"a"); 
  if(aCity[parseInt(sId.substr(0,2))]==null) return "你的身份证地区非法"; 
  sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); 
  var d=new Date(sBirthday.replace(/-/g,"/")) ;
  if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "身份证上的出生日期非法"; 
  for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
  if(iSum%11!=1) return "你输入的身份证号非法"; 
  //aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女");//此次还可以判断出输入的身份证号的人性别
  return true;
}

上述所述是小编给我们介绍的正则表明式截取身份ID号码加密的艺术,希望对大家具有助于,假诺大家有其余疑问请给本身留言,小编会及时还原大家的。在那也特别多谢大家对剧本之家网址的扶助!  

  4、顺序码(第十伍位至二十人卡塔 尔(英语:State of Qatar)

以上内容解析正是本文的全部内容,达成情势很简短,首倘若通晓了逐个身份ID号数字所表示的野趣,就很easy了!

  非常多时候我们都以透过风度翩翩组正则表达式来推断顾客输入的身份ID是不是合法,这在用正则表达式判定从前,你对身份ID号的重新整合有微微精通呢?上边包车型客车话说三个身份ID号里面包蕴了微微的音信:

  3、出生辰期码(第六人至十二位卡塔尔国

  3、出生辰期码(第七个人至十叁位卡塔尔国
    表示编码对象出生的年、月、日,按gb/T7408的规定实践,年、月、日代码之间不用分隔符。

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:"国外"}

末段直接调用方法就能够了,回再次来到校验结果。

  2、正则说明式推断

最后版本:

你恐怕感兴趣的稿子:

  • JavaScript+Regex 居民身份证编号的正则表明式及表达详整
  • 正则表达式验证身份ID号码和信箱、判定checked选中状态
  • JS使用正则表明式验证身份ID编号
  • 15/贰12位居民身份证号码证实的正则表明式计算(详细版卡塔尔
  • JavaScript正则表明式验证身份ID编号是不是合法(二种方法)
  • 怎么样用javascript正则表明式验证居民身份证编号是或不是合法

其次步,定义叁个全国匹配的靶子:

  2、地址码(前七位数卡塔尔国

    表示在同风度翩翩地址码所标志的区域限量内,对同龄、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女人。

    作为尾号的校验码,是由号码编写制定单位按统风流浪漫的公式总结出来的,假设某个人的尾号是0-9,都不会现身X,但只要尾号是10,那么就得用X来代替,因为假若用10做尾号,那么 这个人的居民身份证就改成了20个人。X是达拉斯数字的10,用X来代替10,可以确认保障百姓的居民身份证相符国标。

  5、校验码(第十柒位数卡塔尔国

PS:上面介绍相比较规范的居民身份证号验证正则表明式

您大概感兴趣的篇章:

  • JS正则表达式完美兑现身份证校验功用
  • JS使用正则表达式验证居民身份证编号
  • JS数不胜数轻易正则表明式验证效用小结【手提式有线电话机,地址,集团税号,金额,身份证等】
  • JavaScript正则表明式验证居民身份证号码是或不是合法(三种格局)
  • 何以用javascript正则表明式验证居民身份证号码是或不是合法
  • JavaScript+Regex 居民身份证编号的正则表达式及表达详明

  1、定义四个全国地点的对象

如上所述是笔者给大家介绍的JS前端居民身份证音讯认证正则表明式,希望对大家持有利于,假若大家有任何疑问请给自家留言,作者会及时恢复大家的。在这里也非常感激我们对台本之家网址的支撑!

    表示编码对象出生的年、月、日,按gb/T7408的鲜明施行,年、月、日代码之间不用分隔符。

其三步,定义分别定义十伍个人身份ID和17人身份中的效验准绳:

var idCard = '420119188404098978X'; 
//保留前四位和后四位,中间用*号加密 
idCard = idCard.replace(/(d{4})d*([0-9a-zA-Z]{4})/,"$1******$2"); 
//结果:4201******978X 

大多时候大家都以经过风姿罗曼蒂克组正则表达式来决断顾客输入的居民身份证是或不是合法,那在用正则表达式推断早前,首先要做到的是对身份ID新闻的一些效用准则的驾驭:

  在明亮居民身份证号结构重新整合各部分的意思后,我们早先步入正题:

  2、地址码(前伍人数卡塔尔

有的渴求顾客音信相比严酷的地点比如客商注册、登入的时候都急需验证顾客的居民身份证是还是不是合法,而由此这么些注明能大大的过滤掉比较多水客,给你的系列带给极其精准的顾客新闻。

版权声明:本文由澳门金莎娱乐发布于关于澳门金莎,转载请注明出处:JS身份证信息验证正则表达式,正则表达式截取身份证号码加密的方法