身份证正则表达式详细阐述

一、身份证正则表达式

身份证号码是中国公民的唯一身份标识,其格式是18位纯数字或17位数字加1位大写字母X。身份证正则表达式使用正则表达式来描述此格式,以进行身份证号码的合法性校验。具体的正则表达式如下所示:

/^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i

其中,^和$是表示字符串开始和结束的特殊字符,[]表示集合,\d表示数字,|表示或,()表示分组,{}表示重复次数,i表示忽略大小写,X表示大写字母x。

这个正则表达式可以分为6个部分:

  1. [1-9]\d{5}表示6位数字,第一位数字为1-9,后面5位为任意数字,这是地址码的格式要求。
  2. (19\d{2}|2\d{3})表示4位数字年份,19开头的表示19XX年,20开头的表示20XX年,这是出生年份的格式要求。
  3. (0[1-9]|1[0-2])表示2位数字月份,01-12之间,这是出生月份的格式要求。
  4. (0[1-9]|[12]\d|3[01])表示2位数字日期,01-31之间,这是出生日期的格式要求。
  5. \d{3}表示3位数字,这是顺序码的格式要求。
  6. ([0-9]|X)表示1位数字或大写字母X,这是校验码的格式要求。

二、js身份证正则表达式

在Javascript中,要使用正则表达式进行校验,可以使用RegExp对象来构造身份证正则表达式,并使用test()函数进行校验。示例代码如下:

const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
const idCard = "330381199001011111";
if (reg.test(idCard)) {
    console.log("身份证号码合法");
} else {
    console.log("身份证号码不合法");
}

三、香港身份证正则表达式

香港身份证号码共有8位或10位,格式为[A-Z][\d]{6}[\(\d\)]或[A-Z][\d]{6}[\(\d\)],其中,字母由A至Z,数字由0至9,最后一位可以是数字或括号内的A。

香港身份证正则表达式如下所示:

/^[a-zA-Z]\d{6}[\(\d\)]$/

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

使用Javascript进行身份证验证需要使用RegExp对象和test()函数。示例代码如下:

function validateIdCard(num) {
    const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
    if (!reg.test(num)) {
        return false;
    }
    return true;
}
const idCard = "330381199001011111";
if (validateIdCard(idCard)) {
    console.log("身份证号码合法");
} else {
    console.log("身份证号码不合法");
}

五、判断身份证的正则表达式

在判断身份证的过程中,需要先判断身份证号码是否合法,接着可以通过身份证号码来提取出性别和出生日期等信息。以下是用正则表达式提取出出生日期和顺序码的示例代码:

function getIdCardInfo(idCard) {
    const birthday = idCard.substring(6, 14);
    const sex = idCard.substring(16, 17);
    const order = idCard.substring(14, 17);
    const year = birthday.substring(0, 4);
    const month = birthday.substring(4, 6);
    const day = birthday.substring(6, 8);
    const date = new Date(year + "-" + month + "-" + day);
    const result = {
        birthday: date,
        sex: sex % 2 === 0 ? "女" : "男",
        order: parseInt(order)
    };
    return result;
}
const idCard = "330381199001011111";
if (validateIdCard(idCard)) {
    const info = getIdCardInfo(idCard);
    console.log("出生日期:" + info.birthday);
    console.log("性别:" + info.sex);
    console.log("顺序码:" + info.order);
} else {
    console.log("身份证号码不合法");
}

六、正则表达式提取身份证

如果要从一段文本中提取出身份证号码,可以使用正则表达式进行匹配和提取。示例代码如下:

const text = "身份证号码:330381199001011111";
const reg = /[1-9]\d{5}(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)/i;
const match = reg.exec(text);
if (match && match.length > 0) {
    console.log("身份证号码:" + match[0]);
}

七、利用正则表达式验证身份证合法性

利用正则表达式验证身份证的合法性是实现身份证验证的常用方法之一。以下是利用正则表达式来验证身份证的合法性的代码示例:

function validateIdCard(idCard) {
    const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
    if (!reg.test(idCard)) {
        return false;
    }
    const Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];
    const Ai = "10X98765432";
    let sum = 0;
    for (let i = 0; i < 17; i++) {
        sum += parseInt(idCard.charAt(i)) * Wi[i];
    }
    const last = Ai.charAt(sum % 11);
    if (last !== idCard.charAt(17)) {
        return false;
    }
    return true;
}
const idCard = "330381199001011111";
if (validateIdCard(idCard)) {
    console.log("身份证号码合法");
} else {
    console.log("身份证号码不合法");
}

八、身份证的正则表达式代码

以下是JavaScript中常用的身份证正则表达式代码:

const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;

九、正则表达式匹配身份证

在文本中查找并匹配身份证号码可以使用正则表达式的match()函数。以下是一个示例代码:

const text = "身份证号码:330381199001011111";
const reg = /[1-9]\d{5}(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)/i;
const match = text.match(reg);
if (match && match.length > 0) {
    console.log("身份证号码:" + match[0]);
}

总结

本文详细阐述了身份证正则表达式的相关知识,包括身份证正则表达式、js身份证正则表达式、香港身份证正则表达式、js身份证验证正则表达式、判断身份证的正则表达式、正则表达式提取身份证、利用正则表达式验证身份证合法性、身份证的正则表达式代码和正则表达式匹配身份证等方面。通过本文的学习,读者可以更加深入地了解身份证正则表达式的具体实现方式和应用场景,从而更加灵活地应用身份证号码的校验和提取功能。

原创文章,作者:CRNHI,如若转载,请注明出处:https://www.506064.com/n/369104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CRNHICRNHI
上一篇 2025-04-12 13:00
下一篇 2025-04-12 13:00

相关推荐

  • Python正则表达式search()和match()有什么区别?

    search()和match()都是Python中的正则表达式函数,它们的作用都是在一个字符串中搜索匹配正则表达式的位置,但它们有着不同的使用场景和返回结果。 一、search()…

    编程 2025-04-29
  • MySQL正则表达式替换

    MySQL正则表达式替换是指通过正则表达式对MySQL中的字符串进行替换。在文本处理方面,正则表达式是一种强大的工具,可以方便快捷地进行字符串处理和匹配。在MySQL中,可以使用正…

    编程 2025-04-27
  • Python输入身份证判断地区

    在Python中,我们可以通过简单的代码来验证身份证号码的合法性,同时也可以从中提取出身份证所属的地区信息。 一、验证身份证号码的合法性 身份证号码是一个18位的字符串,其中最后一…

    编程 2025-04-27
  • index.html怎么打开 – 详细解析

    一、index.html怎么打开看 1、如果你已经拥有了index.html文件,那么你可以直接使用任何一个现代浏览器打开index.html文件,比如Google Chrome、…

    编程 2025-04-25
  • Resetful API的详细阐述

    一、Resetful API简介 Resetful(REpresentational State Transfer)是一种基于HTTP协议的Web API设计风格,它是一种轻量级的…

    编程 2025-04-25
  • 关键路径的详细阐述

    关键路径是项目管理中非常重要的一个概念,它通常指的是项目中最长的一条路径,它决定了整个项目的完成时间。在这篇文章中,我们将从多个方面对关键路径做详细的阐述。 一、概念 关键路径是指…

    编程 2025-04-25
  • neo4j菜鸟教程详细阐述

    一、neo4j介绍 neo4j是一种图形数据库,以实现高效的图操作为设计目标。neo4j使用图形模型来存储数据,数据的表述方式类似于实际世界中的网络。neo4j具有高效的读和写操作…

    编程 2025-04-25
  • AXI DMA的详细阐述

    一、AXI DMA概述 AXI DMA是指Advanced eXtensible Interface Direct Memory Access,是Xilinx公司提供的基于AMBA…

    编程 2025-04-25
  • c++ explicit的详细阐述

    一、explicit的作用 在C++中,explicit关键字可以在构造函数声明前加上,防止编译器进行自动类型转换,强制要求调用者必须强制类型转换才能调用该函数,避免了将一个参数类…

    编程 2025-04-25
  • HTMLButton属性及其详细阐述

    一、button属性介绍 button属性是HTML5新增的属性,表示指定文本框拥有可供点击的按钮。该属性包括以下几个取值: 按钮文本 提交 重置 其中,type属性表示按钮类型,…

    编程 2025-04-25

发表回复

登录后才能评论