ホームページ  >  記事  >  バックエンド開発  >  PHPで正規表現を使用してIDカードのみに一致させる方法

PHPで正規表現を使用してIDカードのみに一致させる方法

PHPz
PHPzオリジナル
2023-03-21 19:12:331445ブラウズ

正規表現はプログラムで一般的に使用されるツールであり、一連のルールを使用してテキストを照合および変更できます。 PHP では、正規表現の使用は非常に重要であり、主に文字列の一致、置換、抽出操作に使用されます。

あらゆる正規表現の中でも、ID 番号の照合は古典的な問題です。 PHP では、一連の正規表現を使用して ID 番号を照合できます。

まず、ID 番号の構造を理解する必要があります。国家規格「Citizen Identity Number」(GB 11643-1999)によると、ID番号は合計18桁で、最初の17桁が市外局番と生年月日コード、18桁がチェックコードとなっています。

このうち、最初の6桁は地域コードで、省、自治区、直轄市の略称が含まれます。 7 桁目から 14 桁目は、YYYYMMDD 形式の生年月日コードです。 15桁目から17桁目は通し番号、つまり同じ日に同じ地域で生まれた人の通し番号で、17桁目の奇数が男性、偶数が女性を表します。最後の桁はチェックコードで、国の基準に従って計算された番号です。

ID 番号の構造に従って、次の PHP 正規表現を書くことができます:

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

上記の正規表現では:

  • ^ は次のことを意味します。正規表現は一致を開始します
  • () はグループを表します
  • [1-9] は 1 ~ 9 の任意の数値を表します
  • \d は Yu[0 に等しい任意の数値を表します-9]
  • {5} は、前の要素を 5 回繰り返す必要があることを意味します
  • | は、または
  • ##[12] は、1 または 2
  • $ は、この正規表現で一致を終了することを意味します。
  • i は、大文字と小文字を区別しないことを意味します。
最後のチェック コードの一致は特別です。最終的に X になる可能性があるため、(\d|X) を使用して表します。

preg_match 関数を使用して ID 番号を照合します。コードは次のとおりです:

$pattern = '/^([1-9]\d{5})(19\d{2}|20\d{2})(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i';
$id_card = '11010119880101001X';
if (preg_match($pattern, $id_card)) {
   echo '匹配成功';
} else {
   echo '匹配失败';
}
この例では、2 つの変数 $pattern と $id_card がパラメータとして preg_match 関数に渡されます。照合が成功した場合は「照合成功」、そうでない場合は「照合失敗」が出力されます。

つまり、PHP 正規表現は、ID 番号などの複雑な文字列の一致に使用できる非常に強力なツールです。この記事を通じて、PHP で正規表現を使用して ID 番号を照合する方法をマスターする必要があります。

以上がPHPで正規表現を使用してIDカードのみに一致させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。