ホームページ > バックエンド開発 > PHPチュートリアル > ID番号の有効性と性別を検証するためのPHP正規表現方法

ID番号の有効性と性別を検証するためのPHP正規表現方法

王林
リリース: 2023-06-24 12:36:01
オリジナル
1421 人が閲覧しました

ID カード番号は、我が国の居住者を識別するための重要な記号であり、さまざまな場面で本人確認に使用されます。アプリケーションでは、ID 番号の有効性と正確性を保証するために、正規表現による検証が必要です。この記事では、PHP 正規表現を使用して ID 番号の有効性と性別を検証する方法を紹介します。

1. ID 番号の構成と規則

ID 番号は、18 桁または 17 桁と 1 つのチェックコードで構成されます。このうち最初の17桁はIDカード所有者の情報を表し、最後の1桁はIDカード番号が正しいことを確認するための認証コードを表します。

ID 番号の規則は次のとおりです。

  1. 最初の 6 桁は市外局番で、ID カード所有者が所在する行政地域を示します。
  2. 次の 8 桁は生年月日コードで、ID カード所有者の生年月日を表します。形式は 6 桁の数字で、最初の 2 桁が誕生年、最後の 4 桁が誕生月と日を表します。
  3. 17 桁目は性別コードで、奇数が男性、偶数が女性を表します。
  4. 最後の桁はチェックコードで、ID 番号が正しいことを確認するために使用されます。

2. 正規表現を使用して ID 番号を確認する

正規表現を使用すると、ID 番号の正当性を簡単に確認できます。以下に簡単な正規表現の例を示します。

$pattern = '/^[1-9]d{5}(19|20)d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])d{3}[0-9Xx]$/';
$code = '110101199001011234';
if (preg_match($pattern, $code)) {
    echo '身份证号码有效';
} else {
    echo '身份证号码无效';
}
ログイン後にコピー

この正規表現の規則は ID 番号の規則と一致しており、いくつかの修飾子と文字クラスが使用されます。このうち、^ は文字列の先頭を表し、$ は文字列の末尾を表します。 [1-9] は最初の桁を 0 にすることはできないことを意味し、d{5} は次の 5 桁が数字であることを意味します。 (19|20) は、ID カード所有者の誕生年が 19 または 20 で始まる数字であることを示します。 (0[1-9]|1[012])は誕生月の番号01~12を表します。 (0[1-9]|12|3[01])は生年月日が01~31の数字を表します。 d{3} は最後の 3 桁が任意の数値であることを意味し、[0-9Xx] は最後の桁が数字または文字 X であることを意味します。この正規表現を使用すると、ID 番号の正当性を簡単に検証できます。

3. 正規表現を使用してID番号の性別を確認する

ID番号の17桁目はIDカード所有者の性別を表し、奇数は男性、偶数はIDカード所有者の性別を表します。女性。正規表現を使用すると、ID 番号の 17 桁目を簡単に抽出し、性別を判断できます。

次は簡単な例です:

$pattern = '/^[1-9]d{5}(19|20)d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])(d{3})[0-9Xx]$/';
$code = '110101199001011234';
if (preg_match($pattern, $code, $matches)) {
    $sex = $matches[6] % 2 == 0 ? '女' : '男';
    echo '性别为' . $sex;
} else {
    echo '身份证号码无效';
}
ログイン後にコピー

この正規表現は、追加のキャプチャ グループ (d{3}) があることを除いて、前の正規表現と同じです。 ID 番号の最初の桁をキャプチャします (17 ビット)。 $matches 変数を使用してキャプチャされた情報を取得し、17 番目の位置のパリティに基づいて性別を決定します。

要約すると、簡単な正規表現を使用することで、ID 番号の正当性を簡単に検証し、性別情報を抽出することができます。実際のアプリケーションでは、より厳格で詳細な検証ルールが必要な場合は、実際のニーズに応じて調整および改善できます。

以上がID番号の有効性と性別を検証するためのPHP正規表現方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート