首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js验证身份证号码正则表达式

身份证号码的正则表达式主要用于验证身份证号码的格式是否正确。中国的身份证号码有两种格式:15位和18位。15位身份证号码由6位地址码、6位出生日期码和3位顺序码组成;18位身份证号码由6位地址码、8位出生日期码、3位顺序码和1位校验码组成。

基础概念

  • 地址码:表示身份证持有人的户籍所在地。
  • 出生日期码:表示身份证持有人的出生年月日。
  • 顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编订的顺序号。
  • 校验码:用于校验身份证号码的正确性。

正则表达式

以下是一个用于验证15位和18位身份证号码的正则表达式:

代码语言:txt
复制
const idCardRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;

优势

  • 简洁高效:正则表达式可以快速验证身份证号码的基本格式。
  • 易于实现:在JavaScript中,使用正则表达式进行验证非常方便。

类型

  • 15位身份证号码^\d{15}$
  • 18位身份证号码^\d{18}$
  • 17位加校验码的身份证号码^\d{17}(\d|X|x)$

应用场景

  • 用户注册:在用户注册时验证身份证号码的合法性。
  • 数据校验:在数据处理过程中,确保身份证号码格式正确。

示例代码

以下是一个完整的JavaScript示例,用于验证身份证号码:

代码语言:txt
复制
function validateIdCard(idCard) {
  const idCardRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  if (!idCardRegex.test(idCard)) {
    return false;
  }

  // 验证18位身份证号码的校验码
  if (idCard.length === 18) {
    const weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    const checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
    let sum = 0;
    for (let i = 0; i < 17; i++) {
      sum += parseInt(idCard.charAt(i)) * weight[i];
    }
    const mod = sum % 11;
    return checkCode[mod] === idCard.charAt(17).toUpperCase();
  }

  return true;
}

// 测试
console.log(validateIdCard('11010519491231002X')); // true
console.log(validateIdCard('110105194912310021')); // false
console.log(validateIdCard('110105491231002'));    // true
console.log(validateIdCard('1101054912310021'));   // false

可能遇到的问题及解决方法

  1. 格式不正确:使用正则表达式验证身份证号码的基本格式。
  2. 校验码错误:对于18位身份证号码,需要额外验证校验码的正确性。

通过上述方法,可以有效验证身份证号码的合法性,确保数据的准确性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • JS正则表达式验证大全

    ; } } JAVASCRIPT正则表达式集 :   验证数字:^[0-9]*$   验证n位的数字:^\d{n}$   验证至少n位数字:^\d{n,...}$   验证m-n位的数字:^\d{m,n}$   验证零和非零开头的数字:^(0|[1-9][0-9]*)$   验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?...  验证长度为3的字符:^.{3}$   验证由26个英文字母组成的字符串:^[A-Za-z]+$   验证由26个大写英文字母组成的字符串:^[A-Z]+$   验证由26个小写英文字母组成的字符串...验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+   验证汉字:^[\u4e00-\u9fa5],{0,}$   验证Email地址:^\w+[-+.]...验证身份证号(15位或18位数字):^\d{15}|\d{}18$   验证一年的12个月:^(0?

    10.2K70

    身份证号码的正则表达式及验证详解(JavaScript,Regex)

    简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案。...[idcard-check] 身份证号码说明 居民身份证号码,正确、正式的称谓应该是“公民身份号码”。...以北京市朝阳区一女性身份证号码为例,身份证号码所表示的含义如下图所示: [身份证号码含义解析] 注:该身份证号码来源于国标【GB 11643-1999】。...例:我国并不存在16,26开头的地区,却可通过验证 日期判定不够精确。...checkID("110105194902310026")); //输出 false,地区码不符 console.log(checkID("160105194912310029")); 演示代码 以上为毛三十对身份证号码验证的理解和分析

    24.1K134

    浅谈正则表达式验证身份证号码(C# winform)

    先大概介绍一下身份证号码的组成情况(来自百度): 目前我国公民身份证号码由18位数字组成:前6位为地址码,第7至14位为出生日期码,第15至17位为顺序码,第18位为校验码。...虽然校验码为“X”不能更换,但若需全用数字表示,只需将18位公民身份号码转换成15位居民身份证号码,去掉第7至8位和最后1位3个数码。 当今的身份证号码有15位和18位之分。...1985年我国实行居民身份证制度,当时签发的身份证号码是15位的,1999年签发的身份证由于年份的扩展(由两位变为四位)和末尾加了效验码,就成了18位。这两种身份证号码将在相当长的一段时期内共存。...两种身份证号码的含义如下: 18位的身份证号码 如:130429####%%%%0078 1~6位为地区代码,其中1、2位数为各省级政府的代码,3、4位数为地、市级政府的代码,5、6位数为县、区级政府代码...以上正在表达式(红色部分)只能判断以下3种情况:   1、身份证号码为15位数字; 2、身份证号码为18位数字; 3、身份证号码为17位数字+1个字母    个人觉得,身份证组成还有出生年月至少应该加上一个日期判断

    1.5K20

    身份证号码验证算法

    做项目的时候需要对拿到的数据进行“清洗”,比如剔除一些不可能存在的身份证号码。查阅了网上的身份证号码验证算法,自己也总结一下。...(一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 ...public static void main(String[] args){ Id18 test=new Id18(); System.out.println("该身份证验证码...test.getValidateCode("14230219700101101")); //该身份证校验码:3 } } (三)说明 1.程序可以根据已有的17位数字本体码,获取对应的验证码...2.该程序可以剔除验证码不正确的身份证号码。 3.15位的身份证出生年份采用年份后2位,没有最后1位校验码。 4.完整的身份证18位,最后一位校验位可能是非数字。

    2.4K60

    身份证号码验证算法

    博客园 链接:http://www.cnblogs.com/xudong-bupt/p/3293838.html(点击尾部阅读原文前往) 做项目的时候需要对拿到的数据进行“清洗”,比如剔除一些不可能存在的身份证号码...查阅了网上的身份证号码验证算法,自己也总结一下。 (一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。...static void main(String[] args){ Id18 test=new Id18(); System.out.println("该身份证验证码...test.getValidateCode("14230219700101101")); //该身份证校验码:3 } } (三)说明 1、程序可以根据已有的17位数字本体码,获取对应的验证码...2、该程序可以剔除验证码不正确的身份证号码。 3、15位的身份证出生年份采用年份后2位,没有最后1位校验码。 4、完整的身份证18位,最后一位校验位可能是非数字。

    1.9K50

    使用FME验证身份证号码

    内容简介 本篇推送,将简单介绍一下怎么使用FME来验证身份证号码。 身份证号码 结构: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。...身份证号码验证 了解过身份证的组成以及验证规则之后,下面就要开始验证了。 验证方式 身份证号的验证,可以分为这么几个部分:1、地址码验证,2、出生日期验证,3、顺序码验证,4、校验码验证。...其中地址码验证比较简单,只需提取出身份证的前6位,与县级行政区划代码做个验证即可。顺序码的验证,只需将第17位提取出来做奇偶性与性别的验证即可。所以接下来的验证将着眼于两部分:日期与校验码!...以上三种方式都能提取出日期信息,而验证也非常的简单,直接使用日期转换的方式进行验证即可,能转换成功的,就是正常的日期,不成功就是有问题的日期 开始验证 直接使用日期转换的转换器,对提取出的转换器进行了验证...所以这个身份证号码是有问题的。 ? 验证码验证 根据身份证的验证码规则,需要将身份证的每一位乘上其加权因子,然后再与11取余,得到的余数再到对应的校验码表中,查找对应的校验码。

    2.1K20

    身份证号码验证算法

    做项目的时候需要对拿到的数据进行“清洗”,比如剔除一些不可能存在的身份证号码。查阅了网上的身份证号码验证算法,自己也总结一下。...(一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 ...public static void main(String[] args){ Id18 test=new Id18(); System.out.println("该身份证验证码..."+test.getValidateCode("14230219700101101")); //该身份证校验码:3 } } (三)说明 1.程序可以根据已有的17位数字本体码,获取对应的验证码...2.该程序可以剔除验证码不正确的身份证号码。 3.15位的身份证出生年份采用年份后2位,没有最后1位校验码。 4.完整的身份证18位,最后一位校验位可能是非数字。

    6.3K10

    PYTHON验证身份证号码准确性

    大家每个人都有身份证,但是认真研究过自己那18位居民身份证号码的人可能真的不多,今天就跟大家简单聊一下身份证号码的构成形式及最后一位验证码的验证办法。...最开始呐先向大家介绍一下身份证号码的生成规则,特意找了一个最官方的文档,以下内容摘选于国家质量技术监督局编制的GB11643-1999《公民身份号码》 那么根据官方公布的以上五项标准,我们就可以自行提炼出一个居民身份证号码必须满足的一些条件了...最后一位验证码与算法结果一致 看不懂?...没关系,简单翻译并且加工一下就是: 1.身份证号码前17位数分别乘以7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 2.前17位数字和系数相乘的结果相加 3.相加的数据除以11,...余数有0-10这11个数字,分别对应的身份证最后一位校验码为1,0,X,9,8,7,6,5,4,3,2(这个X其实是罗马数字的10) 根据以上我们提炼的规则我们就可以利用一些算法工具在一些简单的层面上去验证一个身份证号码的真假了

    3.2K90

    版本号的正则表达式-身份证号码的正则表达式及验证详解(JavaScript,Regex)

    简言   在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案。   ...身份证号码说明   居民身份证号码,正确、正式的称谓应该是“公民身份号码”。...以北京市朝阳区一女性身份证号码为例,身份证号码所表示的含义如下图所示:   注:该身份证号码来源于国标【GB 11643-1999】。   下面我们就从零开始完成一个完整的身份证号码校验过程。   ...方案1 (简单)1.1 分部规则   我们首先提出方案1版本号的正则表达式,并分步做如下规则定义:   1.1.1 地址码规则:   根据以上规则,写出地址码的正则表达式: /^[1-9]\d{5}/...1.1.5 顺序码规则:   根据以上规则,写出顺序码的正则表达式 :/\d{3}/。   1.1.6 校验码规则:   根据以上规则,写出校验码的正则表达式 :/[0-9Xx]/。

    1.7K10
    领券