如何使用正規表示式在 PHP 中匹配身分證號碼中的出生日期

王林
發布: 2023-06-22 22:32:01
原創
1955 人瀏覽過

身分證號碼是一個十分重要且敏感的訊息,其中儲存了個人的出生日期、性別、籍貫等諸多資訊。在 PHP 中使用正規表示式來匹配身分證號碼中的出生日期則變得尤為重要。本篇文章將從以下三個面向介紹如何使用正規表示式在 PHP 中匹配身分證號碼中的出生日期。

一、身分證號碼格式

身分證號碼在格式上有一定的規定,包含了以下資訊:

  1. 前兩位代表省份;
  2. 中間兩位代表城市或縣級市;
  3. 緊接著是出生年份;
  4. 接下來兩位代表出生月份;
  5. 再往後兩位代表出生日期;
  6. 還有一位校驗碼。

身分證號碼共有18位,其中前17位為數字或大寫字母,最後一位可能是數字或大寫字母X。因此,在使用正規表示式來匹配身分證號碼中的出生日期之前,需要了解身分證號碼的格式。

二、正規表示式的使用

在 PHP 中,使用 preg_match 函數呼叫正規表示式,進行身分證號碼比對。為了匹配出生日期,需要使用括號() 將出生年月日分組,並在正規表示式中使用對應的通配符,如下所示:

$pattern = '/^d{6}(19|20)d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])d{3}[dX]$/';
登入後複製

其中:

  1. ^ 表示匹配字串的開始;
  2. d{6} 匹配前六位省、城市資訊;
  3. (19 |20) 匹配出生年份的前兩位,限制為19 或20;
  4. #d{2} 匹配出生年份的後兩位;
  5. (0[1-9]|1[012]) 配對出生月份,限制範圍為01-12;
  6. (0[1-9]|[12] [0-9]|3[01]) 匹配出生日期,限制範圍為01-31;
  7. d{3} 匹配身分證號碼的最後三位學校驗碼;
  8. [dX] 匹配身分證號碼的最後一位,可能是數字或大寫字母X;
  9. ##$ 表示匹配字串的結尾。
三、程式碼實作

可以透過使用 preg_match 函數和上述正規表示式進行身分證號碼匹配,並使用括號對出生年月日進行分組來取得。程式碼如下所示:

$id_card = '34052419951117258X';  // 身份证号码
$pattern = '/^d{6}(19|20)d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])d{3}[dX]$/';  // 正则表达式

if (preg_match($pattern, $id_card, $matches)) {
    $birth_year = $matches[1] . $matches[2];  // 出生年份
    $birth_month = $matches[3];  // 出生月份
    $birth_day = $matches[4];  // 出生日期
    echo "出生日期:{$birth_year}-{$birth_month}-{$birth_day}";  // 输出
} else {
    echo "身份证号码格式不正确";
}
登入後複製

上述程式碼的輸出結果為:

出生日期:1995-11-17
登入後複製
本篇文章介紹了在PHP 中使用正規表示式來匹配身分證號碼中的出生日期的方法,需要注意正規表示式的編寫以及身分證號碼格式的限制。正規表示式作為一種強大的字串匹配工具,在 PHP 中有著廣泛的應用。

以上是如何使用正規表示式在 PHP 中匹配身分證號碼中的出生日期的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!