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

身份证号码正则表达式 js

身份证号码正则表达式在JavaScript中的应用主要用于验证身份证号码的格式是否正确。以下是关于身份证号码正则表达式的基础概念、优势、类型、应用场景以及可能遇到的问题和解决方案。

基础概念

身份证号码通常由18位数字组成,最后一位可能是数字或字母X。其结构如下:

  • 前17位为数字
  • 第18位可能是数字或字母X(代表10)

正则表达式

一个常见的身份证号码正则表达式如下:

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

优势

  1. 高效验证:通过正则表达式可以快速检查身份证号码的基本格式。
  2. 简洁明了:代码简洁,易于理解和维护。

类型

身份证号码正则表达式主要分为两种:

  • 15位身份证号码^\d{15}$
  • 18位身份证号码^\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

可能遇到的问题和解决方案

问题1:正则表达式过于简单,无法验证所有情况

原因:简单的正则表达式可能无法覆盖所有合法的身份证号码格式。

解决方案:使用更复杂的正则表达式,并结合校验码验证逻辑。

问题2:性能问题

原因:在处理大量数据时,正则表达式的性能可能成为瓶颈。

解决方案:优化正则表达式,减少回溯,或者分批处理数据以提高效率。

通过上述方法和示例代码,可以有效地验证身份证号码的格式,并确保数据的准确性。

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

相关·内容

  • js正则表达式

    js正则表达式 目录 正则表达式定义及作用 字符串方法使用正则表达式 修饰符及模式 RegExp对象 实际用例 正则在线工具 正则表达式定义及作用 定义 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式...语法 /正则表达式主体/修饰符(可选) 作用 文本搜索 文本替换 字符串方法使用正则表达式 search()方法 检索与正则表达式相匹配的子字符串,并返回子串的起始位置 代码实例 var...) console.log(n) 输出结果 2 代码解释 i是一个修饰符, 表示搜索不区分大小写 search()方法也可以用于检索字符串中指定的子字符串 replace()方法 替换第一个与正则表达式匹配的子串...匹配任何包含零个或一个n的字符串 RegExp对象 RegExp对象是一个预定义了属性和方法的正则表达式对象 test()方法 用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本...正则表达式在线生成工具 http://tools.jb51.net/regex/create_reg

    7.3K30

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

    简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案。...[idcard-check] 身份证号码说明 居民身份证号码,正确、正式的称谓应该是“公民身份号码”。...以北京市朝阳区一女性身份证号码为例,身份证号码所表示的含义如下图所示: [身份证号码含义解析] 注:该身份证号码来源于国标【GB 11643-1999】。...下面我们就从零开始完成一个完整的身份证号码校验过程。...1.2 方案1正则表达式 综合以上6条规则,给出完整的正则表达式及测试程序如下: var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2

    24.1K134

    正则表达式的简单用法+利用正则表达式检验身份证号码格式

    正则表达式最简单的用法就是用来判断一个字符串是否符合某种表达式,可以用正则表达式判断字符串是否属于电话号码,是否属于身份证号。。。。...首先要明白身份证号码的编码规则,然后根据编码规则去写正则表达式 身份证编码规则如下(身份证有15为何和18位,以18位身份证为例): 第1位和第2位:省,自治区,直辖市代码(有关取值可查看代码表); 第...12位:出生月; 第13位和第14位:出生日; 第15位到第17位:顺序码,第17位若是男生则为单数,若是女生则为双数; 第18位:表示校验码,可以是0-9或者X;(15位身份证无校验码) 验证15位身份证号码的正则表达式为...String matchString = "^[1-9]\\d{7}((0[1-9])||(1[0-2]))((0[1-9])||(1\\d)||(2\\d)||(3[0-1]))\\d{3}$"; 验证18位身份证号码的正则表达式为...-9]\\d{5}[1-9]\\d{3}((0[1-9])||(1[0-2]))((0[1-9])||(1\\d)||(2\\d)||(3[0-1]))\\d{3}([0-9]||X)$"; 但是以上正则表达式验证的身份证号码只能说是符合身份证编码规则

    64810

    浅谈正则表达式验证身份证号码(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

    js正则表达式(一)

    https://blog.csdn.net/wkyseo/article/details/78017841 最近对正则表达式又不熟悉了,故重新疏漏API,以后每日写一个正则来练习提升 正则表达式中特殊字符的含义...\n //一个反向引用(back reference),指向正则表达式中第 n 个括号? (?:x) //Matches x but does not remember the match....compile compile() 方法用于在脚本执行过程中编译正则表达式,也可用于改变和重新编译正则表达式。...最新标准已废弃 支持正则表达式的 String 对象的方法 search stringObject.search(regexp) 返回值:stringObject 中第一个与 regexp 相匹配的子串的起始位置...如果第一个参数是正则表达式,并且其为全局匹配模式,那么这个方法将被多次调用, 每次匹配都会被调用。 变量名 代表值 match 匹配的子串(不是分组)。(对应于上述的$&。)

    3.8K40

    「JS高级」正则表达式

    1.正则表达式概述1.1什么是正则表达式正则表达式( ... 请注意,本文编写于 2058 天前,最后修改于 2058 天前,其中某些信息可能已经过时。...1.正则表达式概述 1.1什么是正则表达式 正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。...其他语言也会使用正则表达式,本阶段我们主要是利用JavaScript 正则表达式完成表单验证。 1.2 正则表达式的特点 灵活性、逻辑性和功能性非常的强。...比如用户名: /^[a-z0-9_-]{3,16}$/ 2.正则表达式在js中的使用 2.1正则表达式的创建 在 JavaScript 中,可以通过两种方式创建一个正则表达式。...3.正则表达式中的特殊字符 3.1正则表达式的组成 一个正则表达式可以由简单的字符构成,比如 /abc/,也可以是简单和特殊字符的组合,比如 /ab*c/ 。

    2.5K20

    js正则表达式梳理

    正则表达式简介 正则表达式(Regular Expression): 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的租和,组成一个“规则字符串”,这个规则字符串用来表达对字符串的一种过滤逻辑...正则表达式的作用 给定的字符串是否符合正则表达式的过滤逻辑(匹配)。 可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)。 强大的字符串替换能力(替换)。...正则表达式的组成 普通字符 abc 中国 123 等 特殊字符(元字符、限定符、中括号):正则表达式中有特殊意义的字符。 元字符 元字符就是在正则表达式中具有特殊含义的字符。 元字符 说明 ....,即变成了惰性匹配 js中使用正则表达式 1//方式1: 语法: var 变量 = new RegExp("规则","修饰符") 2var reg = new RegExp("d","g") 3 4//...方式2: 语法:var 变量 = /正则表达式/ (推荐使用) 5var reg = /d/g; 相关正则方法 正则对象.test(字符串); 校验匹配正则的子字符串,返回布尔值。

    5.2K10

    js特殊符号正则表达式_js正则表达式判断特殊字符

    JavaScript正则表达式功能: 搜索、替换、判断 JavaScript正则表达式格式: /正则表达式主体/修饰符 JavaScript正则表达式主体内容: JavaScript正则表达式中修饰符的使用...JavaScript正则表达式中方括号的使用: 将一些规则连在一起匹配一个字符 方括号: 表达式 描述 [abc] 查找方括号之间的任何字符。 [^abc] 查找任何不在方括号之间的字符。...JavaScript正则表达式中元字符的使用 需要使用转移符号,可以方便使用,可以认为是对方括号使用的简化: 元字符: 元字符 描述 . 查找单个字符,除了换行和行结束符。 \w 查找单词字符。...JavaScript中正则表达式应用场景: 搜索功能(字符串方法) search() 方法参数为字符串或者是正则表达式 返回结果为匹配成功的索引值,如果没有,返回-1 替换功能(字符串方法) replace...() 方法有两个参数,第一个用于匹配,第二个用于替换 第一个参数可以是字符串或者是正则表达式 第二个只能是字符串 判断功能(正则表达式方法) test() 参数只有一个,为判断的字符串,返回值表示是否匹配

    8.8K20

    最全的js正则表达式用法大全_js正则表达式语法大全

    (一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:< (S*?)...),非常有用的表达式 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 评注:表单验证时很实用 匹配网址URL的正则表达式:[a-zA-z]...匹配中文字符的正则表达式: [u4e00-u9fa5] 匹配双字节字符(包括汉字在内):[^x00-xff] 匹配空行的正则表达式:n[s| ]*r 匹配HTML标记的正则表达式:/....*|/ 匹配首尾空格的正则表达式:(^s*)|(s*$) 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 匹配网址URL...的正则表达式:http://([w-]+.)

    4.7K20

    js正则表达式语法

    匹配中文字符的正则表达式: [u4e00-u9fa5] 匹配双字节字符(包括汉字在内):[^x00-xff] 匹配空行的正则表达式:n[s| ]*r 匹配HTML标记的正则表达式:/.*|.../ 匹配首尾空格的正则表达式:(^s*)|(s*$) 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 匹配网址URL的正则表达式...patrn.exec(s)) return false return true } 正则表达式速查表 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。...正则表达式中可以使用ASCII编码。. \num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。 \n 标识一个八进制转义值或一个向后引用。...常用正则表达式 用户名 /^[a-z0-9_-]{3,16}$/ 密码 /^[a-z0-9_-]{6,18}$/ 十六进制值 /^#?

    4.7K10

    js正则表达式校验金额-js正则表达式简单校验方法

    下面就js正则表达式的校验带来内容分享,同时要考虑在js中支持的类型。   ...[a-z]{2,4}){1,3}$/; return reg.test(str);}   到此这篇关于js正则表达式简单校验方法的文章就介绍到这了,更多相关js正则表达式校验内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持...js 正则表达式校验?   <   js验证密码的正则表达式。   完整的js正则表达式:   //强:字母+数字+特殊字符^(?![a-zA-z]+$)(?!\d+$)(?![!...@#$%^&*]+$ //中:字母+数字js正则表达式校验金额js正则表达式校验金额,字母+特殊字符,数字+特殊字符   ^(?![a-zA-z]+$)(?!\d+$)(?![!...js正则表达式验证数字大于15小于200   正则表达式如下:/^1[6-9]$|^[2-9]\d$|^1\d{2}$/。

    9K20

    版本号的正则表达式-身份证号码的正则表达式及验证详解(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

    Js 中的正则表达式

    JavaScript 中的正则表达式(Regex)是用于在文本中匹配特定字符字符串的模式。它们用于验证表单、解析字符串、替换文本等。...正则表达式在 JavaScript 中有许多用途:验证电子邮件:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\....([a-z\.]{2,6})$/将字符串解析为标记:/\w+/g查找并替换文本:replace(/(hello)/g, 'hi')正则表达式有许多用途,这些只是其中的一些示例!...学习正则表达式的先决条件是了解一种编程语言,比如 JavaScript。下面是有关在 JavaScript 中学习并轻松理解正则表达式的文章。...标志(flags)是修改正则表达式行为的可选参数。常见的标志有 g(全局匹配)和 i(大小写不敏感匹配)。希望这些翻译能够帮助您更好地理解 JavaScript 中的正则表达式!

    16110
    领券