深入掌握身份證正則表達式及其應用

一、身份證正則表達式

身份證號碼是我國公民身份識別證件的唯一標識,其規則十分嚴格,只有符合規範的身份證號碼才能被認為是有效的。而身份證正則表達式作為一種正則表達式,是一種用字元來描述和匹配一類字符集合的表達式,可用於驗證身份證號碼的有效性。在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()方法進行校驗可以判斷身份證號碼是否符合規範。

七、身份證正則表達式的使用

身份證正則表達式是一種常見的正則表達式,可以用於驗證身份證號碼的有效性。在實際開發中,我們可以將其應用於身份證號碼的驗證與校驗等場景中,從而保障數據的有效性。

身份證正則表達式具有通用性,不僅可以用於前端驗證,還可以用於後端驗證。可以通過編寫正則表達式的方式實現身份證號碼校驗,可以提高編碼效率,同時保障數據有效性。

八、總結

本文詳細介紹了身份證正則表達式的相關內容,包括身份證正則表達式的基本規則、如何編寫身份證正則表達式、身份證正則表達式的匹配與校驗、身份證正則表達式校驗規則等。在實際開發中,我們可以通過使用身份證正則表達式,對身份證號碼進行校驗與驗證,從而保障數據的有效性。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247054.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:18
下一篇 2024-12-12 13:18

相關推薦

  • Python正則表達式search()和match()有什麼區別?

    search()和match()都是Python中的正則表達式函數,它們的作用都是在一個字元串中搜索匹配正則表達式的位置,但它們有著不同的使用場景和返回結果。 一、search()…

    編程 2025-04-29
  • Python 數據緩存及其應用

    本文將為大家詳細介紹Python數據緩存,並提供相關代碼示例。 一、Python 數據緩存基礎概念 Python 是一種解釋型語言,每次執行完一條語句後就會將內存中的結果清空,如果…

    編程 2025-04-29
  • Python金融庫及其應用

    Python金融庫是Python編程語言在金融領域中的應用,也是金融分析和數據處理的重要工具。它提供了豐富的金融計算和數據處理功能,使得金融分析師能夠快速、高效地進行數據分析和建模…

    編程 2025-04-29
  • Python中除法運算及其應用

    Python作為一種高級編程語言,其強大靈活的特性使其廣泛應用於各個領域中。其中的除法運算也是必不可少的一部分。除法運算主要分為整除和浮點數運算兩種類型,本文將從多個方面對Pyth…

    編程 2025-04-27
  • Python獲取py文件目錄及其應用

    本文將從多個方面介紹Python獲取py文件目錄及其應用,包括獲取py文件所在目錄和父目錄、獲取某個路徑下所有py文件、查找某個目錄下特定文件名的py文件、以及將當前目錄及其子目錄…

    編程 2025-04-27
  • MySQL正則表達式替換

    MySQL正則表達式替換是指通過正則表達式對MySQL中的字元串進行替換。在文本處理方面,正則表達式是一種強大的工具,可以方便快捷地進行字元串處理和匹配。在MySQL中,可以使用正…

    編程 2025-04-27
  • Python中遍歷字元串中的數字兩位數及其應用

    本文將從多個方面詳細闡述Python中遍歷字元串中的數字兩位數的應用及實現方法。 一、提取字元串中的數字兩位數 Python中提取字元串中的數字兩位數可以使用正則表達式,具體代碼如…

    編程 2025-04-27
  • Python NAT實現及其應用

    Python Network Address Translation(NAT,網路地址轉換)是一種通過修改網路地址信息來實現內網與公網通訊的技術,一般用於私有網路與公網之間的數據包…

    編程 2025-04-27
  • Python輸入身份證判斷地區

    在Python中,我們可以通過簡單的代碼來驗證身份證號碼的合法性,同時也可以從中提取出身份證所屬的地區信息。 一、驗證身份證號碼的合法性 身份證號碼是一個18位的字元串,其中最後一…

    編程 2025-04-27
  • freetype庫及其應用

    一、背景介紹 freetype是一個高質量、自由、開源的字體引擎庫,它是一個完全獨立的、非商業性質的項目,主要用於在各種不同的平台上來處理字體,從而使得字體渲染可以更精細、更適應不…

    編程 2025-04-25

發表回復

登錄後才能評論