您的位置:

深入掌握身份证正则表达式及其应用

一、身份证正则表达式

身份证号码是我国公民身份识别证件的唯一标识,其规则十分严格,只有符合规范的身份证号码才能被认为是有效的。而身份证正则表达式作为一种正则表达式,是一种用字符来描述和匹配一类字符集合的表达式,可用于验证身份证号码的有效性。在JavaScript中使用正则表达式的语法如下:

var reg = /^\d{17}(\d|x)$/i;

通过该正则表达式,可以匹配满足以下条件的身份证号码:

  • 18位数字或字母x(大小写均可)组成
  • 前17位为数字,最后一位可以是数字或字母x

这个正则表达式由三个部分组成,分别是“^”、“\d”和“$”。其中,“^”表示匹配字符串的开始;“\d”表示匹配数字(0-9);“$”表示匹配字符串的结束。具体解释如下:

  • ^ 表示正则表达式的开头(如果不加这个符号,每个身份证号码任何位置都可以有非数字的字符)
  • \d 表示匹配数字
  • {17} 表示匹配前面的\d 17次
  • x表示字母x
  • [0-9a-zA-Z] 表示可以为数字,也可以为字母
  • x 也可以为字母x,大小写均可
  • $ 表示匹配字符串的结尾。

通过使用这个正则表达式,可以判断身份证号码是否符合规范,从而保障数据的有效性。

二、身份证正则表达式怎么写

身份证正则表达式的编写根据不同的编程语言有所区别,下面以JavaScript举例介绍身份证正则表达式如何编写。

1.使用单引号或双引号把正则表达式括起来

var reg = /^\d{17}(\d|x)$/i;

2.使用JavaScript对象创建正则表达式

var reg = new RegExp("^\d{17}(\d|x)$","i");

3.去掉正则表达式中的斜杠

var reg = new RegExp("^\\d{17}(\\d|x)$","i");

在不同的编程语言中,身份证正则表达式的编写方式也会有所区别。需要根据实际情况进行编写。

三、身份证正则匹配

使用身份证正则表达式可以快速验证一个身份证号码是否符合规范。在JavaScript中可以使用test()方法进行匹配,test()方法返回一个布尔值,如果匹配成功返回true,否则返回false。示例代码如下:

var reg = /^\d{17}(\d|x)$/i;
var idCard = "xxxxxx";
if(reg.test(idCard)) {
  console.log("身份证格式正确");
} else {
  console.log("身份证格式不正确");
}

使用正则表达式进行匹配可以快速判断一个身份证号码是否符合规范。

四、身份证正则表达式检验

在编写验证身份证号码的代码时,需要使用到身份证正则表达式。检验身份证号码的代码示例如下:

function checkIdCard(idCard) {
  var reg = /^\d{17}(\d|x)$/i;
  if(!reg.test(idCard)) {
    return false;
  }

  var cityCode = {
          "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(!cityCode[idCard.substr(0,2)]) {
    return false;
  }

  var birthYear = idCard.substr(6,4);
  var birthMonth = idCard.substr(10,2);
  var birthDay = idCard.substr(12,2);
  var birthDate = new Date(birthYear + "/" + birthMonth + "/" + birthDay);
  if(birthDate.getTime() != birthDate.getTime()) {
    return false;
  }
  if(birthDate.getFullYear() != parseInt(birthYear)) {
    return false;
  }
  
  var numSum = 0;
  var wiArray = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
  var checkCodeArray = ["1","0","x","9","8","7","6","5","4","3","2"];
  for(var i=0;i<17;i++) {
    numSum += parseInt(idCard.charAt(i)) * wiArray[i];
  }
  var checkCode = checkCodeArray[numSum % 11];
  if(idCard.charAt(17) != checkCode) {
    return false;
  }
  
  return true;
}

该方法的功能为验证身份证号码是否符合规范,如果符合规范,则返回true,否则返回false。

五、身份证正则表达式校验规则

身份证正则表达式校验规则是根据身份证号码的规范进行制定的。根据《公民身份号码》国家标准(GB 11643-1999)的规定,身份证号码由17位数字本体码和一位数字校验码组成,其中18位为完整的身份证号码。其规则包含以下内容:

  • 前6位是区域码:由国家统计局制定,前两位表示省份、直辖市或自治区,第三位表示所属地级行政区划,根据国家统计局的规定,北京市的编号为11,上海市为31,天津市为12,重庆市为50,河北省从130000开始,其他省市的代码见国家统计局的标准。
  • 7-14位是出生年月日:年份用4位数字表示,中间两位表示出生的月份01~12,最后两位表示出生的日期01~31。
  • 15-17位是顺序码:表示在同一地区、同一年份出生的人的顺序号,其中男性为单数,女性为双数。
  • 18位是校验码:由前17位生成,规则详见《公民身份号码》国家标准。

根据这些规则,可以制定出符合标准的身份证号码正则表达式,用于验证身份证号码的有效性。

六、身份证正则表达式校验

使用身份证正则表达式进行校验可以在数据输入时快速判断其是否符合规范,从而减少后续的数据处理。在条件允许的情况下,将身份证号码的校验放在前端进行处理,可以节约服务器资源,提升网站的响应速度。身份证正则表达式校验的代码示例如下:

var idCard = "xxxxxx";
if(checkIdCard(idCard)) {
  console.log("身份证格式正确");
} else {
  console.log("身份证格式不正确");
}

通过调用checkIdCard()方法进行校验可以判断身份证号码是否符合规范。

七、身份证正则表达式的使用

身份证正则表达式是一种常见的正则表达式,可以用于验证身份证号码的有效性。在实际开发中,我们可以将其应用于身份证号码的验证与校验等场景中,从而保障数据的有效性。

身份证正则表达式具有通用性,不仅可以用于前端验证,还可以用于后端验证。可以通过编写正则表达式的方式实现身份证号码校验,可以提高编码效率,同时保障数据有效性。

八、总结

本文详细介绍了身份证正则表达式的相关内容,包括身份证正则表达式的基本规则、如何编写身份证正则表达式、身份证正则表达式的匹配与校验、身份证正则表达式校验规则等。在实际开发中,我们可以通过使用身份证正则表达式,对身份证号码进行校验与验证,从而保障数据的有效性。