身份證正則表達式詳細闡述

一、身份證正則表達式

身份證號碼是中國公民的唯一身份標識,其格式是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/zh-hk/n/369104.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CRNHI的頭像CRNHI
上一篇 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

發表回復

登錄後才能評論