如何用javascript正则表达式验证身份证号码是否合法

在用户注册页面有些需求要求的比较严格,需要对身份证验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客。下面就此实现方法给大家讲解下。

  很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息:

  1、号码的结构
    公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

  2、地址码(前六位数)
    表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/T2260的规定执行。

  3、出生日期码(第七位至十四位)
    表示编码对象出生的年、月、日,按gb/T7408的规定执行,年、月、日代码之间不用分隔符。

  4、顺序码(第十五位至十七位)
    表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

  5、校验码(第十八位数)

    作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么 此人的身份证就变成了19位。X是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

  在知道身份证号结构组成各部分的意思后,我们开始进入主题:

  1、定义一个全国地区的对象

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、正则表达式判断

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;
}

以上内容分析就是本文的全部内容,实现方法很简单,主要是理解了各个身份证号数字所代表的意思,就很easy了!

(0)

相关推荐

  • JavaScript正则表达式验证身份证号码是否合法(两种方法)

    第一种方法: 在用户注册页面有些需求要求的比较严格,需要对身份证js验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客.下面就此实现方法给大家讲解下. 很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息: 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码.

  • JS使用正则表达式验证身份证号码

    废话不多说了,先给大家看一段代码吧 function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if(reg.test(card) === false) { alert("身份证输入不合法"); return false; } } 最近的项目中用的需要调用实名认证的接口,实名

  • 如何用javascript正则表达式验证身份证号码是否合法

    在用户注册页面有些需求要求的比较严格,需要对身份证验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客.下面就此实现方法给大家讲解下. 很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息: 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码(前六

  • 正则表达式验证身份证号码和邮箱、判断checked选中状态

    项目中正好写到登录注册,在用blur事件验证用户输入内容的时候,出现了点bug,最后是在注册按钮onclick的事件里获取用户输入值来验证的. 判断checked选中状态: if(!$('#checkedAgree').prop("checked"){ console.log('no');//未选中 }else{ console.log('yes');//选中 } //注册 $(".regBtn").on('click',function(){ var regUse

  • JavaScript正则表达式验证代码(推荐)

    RegExp:是正则表达式(regular expression)的简写. 正则表达式描述了字符的模式对象.可以使用正则表达式来描述要检索的内容. 简单的模式可以是一个单独的字符.更复杂的模式包括了更多的字符,并可用于解析.格式检查.替换等等. //判断输入内容是否为空 function IsNull(){ var str = document.getElementById('str').value.trim(); if(str.length==0){ alert('对不起,文本框不能为空或者为

  • javascript实现验证身份证号的有效性并提示

    javascript实现验证身份证号的有效性并提示 function nunber(allowancePersonValue){ if(allowancePersonValue=="身份证号"){ $("#span_username").show(); $("#span_username").html("身份证号不能为空"); return false; } //校验长度,类型 else if(isCardNo(allowan

  • Javascript正则表达式验证账号、手机号、电话和邮箱的合法性

    正则表达式是用于匹配字符串中字符组合的模式.在 JavaScript中,正则表达式也是对象.这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match.replace.search 和 split 方法.本章介绍 JavaScript正则表达式. 1.验证帐号是否合法 验证规则:字母.数字.下划线组成,字母开头,4-16位. function checkUser(str){ var re = /^[a-zA-z]\w{3,15}$/; if(re.tes

  • 正则表达式截取身份证号码加密的方法

    下面一段简单的代码给大家介绍正则表达式截取身份证号码加密的方法,具体代码如下所示: 直接上代码: var idCard = '420119188404098978X'; //保留前四位和后四位,中间用*号加密 idCard = idCard.replace(/(\d{4})\d*([0-9a-zA-Z]{4})/,"$1******$2"); //结果:4201******978X PS:下面介绍比较规范的身份证号验证正则表达式 一些要求用户信息比较严格的地方比如用户注册.登录的时候都

  • PHP实现可精确验证身份证号码的工具类示例

    本文实例讲述了PHP实现可精确验证身份证号码的工具类.分享给大家供大家参考,具体如下: <?php class check_IdCard { // $num为身份证号码,$checkSex:1为男,2为女,不输入为不验证 public function checkIdentity($num, $checkSex = '') { // 不是15位或不是18位都是无效身份证号 if (strlen($num) != 15 && strlen($num) != 18) { return f

  • js验证身份证号码记录的方法

    在一些需要填写身份证的表单网页中,需要对身份证的输入做一个验证,于是,我记录下了自己写的验证.在写验证之前,我们需要理解身份证的一些常识规则.中华人民共和国居民身份证验证规则如下: 1.号码的结构: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成. 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码, 三位数字顺序码和一位数字校验码. 2.地址码 * 表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码 * 表示编码对象出生

随机推荐