ID 番号の検証が必要なアプリケーション シナリオでは、正規表現を使用して入力が正当かどうかを判断するのが一般的です。 Golang は、正規表現の一致操作を実行するために使用できる regexp パッケージを提供します。この記事では、golang で正規表現を使用して、入力された ID 番号が正しいかどうかを確認する方法を紹介します。
1. ID カード番号のルール
ID 番号は 18 桁の数字とチェックコードで構成されており、具体的な形式は次のとおりです。州は国家統計局によって指定された統計コードで表されます;
3 桁目から 4 桁目: 省および自治区コードで指定された都市を表します;
5 桁目から 6 桁目: 地区および自治区を表します郡、市、郡、および地区コードによって決定;
7 桁目から 14 桁目: 生年月日を示します (例:
19900907表示生于1990年9月7日
15 桁目から 17 桁目: 通常はシーケンス番号を示します)奇数
18 桁目: ISO 7064:1983.MOD 11-2 の規定に従って生成されたチェック コードを示します。
2. 正規表現を使用して ID 番号を確認する
golang では、正規表現を使用して ID 番号がルールに準拠しているかどうかを照合できます。具体的な正規表現は以下のとおりです。
^([1-9]d{5})(19|20)d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|(3[0-1]))d{3}[0-9xX]$
このうち、^は一致文字列の開始位置、$は一致文字列の終了位置を表します。 ([1-9]d{5}) は、ID 番号の最初の 6 桁、つまり都道府県と市のコードを一致させることを意味します。 (19|20)d{2} は ID 番号に一致する誕生年を表します。19 と 20 は年の最初の 2 桁を表し、d{2} は年の最後の 2 桁を表します。 ((0[1-9])|(1[0-2])) は月に一致し、((0-2)|(3[0-1])) は日に一致し、d{3}[0- 9xX] シーケンス コードとチェック コードを一致させます。x と X は、チェック コードが 0 ~ 9 の数字または文字 X (大文字と小文字の両方) であることを示します。
golang では、正規表現のマッチングに regexp パッケージを使用できます。具体的な使用法は次のとおりです。
package main import ( "fmt" "regexp" ) func main() { var id string = "110101199003079077" // 定义正则表达式 reg := `^([1-9]d{5})(19|20)d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|(3[0-1]))d{3}[0-9xX]$` // 编译正则表达式 rgx := regexp.MustCompile(reg) // 进行匹配 match := rgx.Match([]byte(id)) if match { fmt.Println("身份证号码合法") } else { fmt.Println("身份证号码非法") } }
上記のコードでは、最初に ID カード番号 id が定義され、次に regexp パッケージの Compile 関数を使用して正規表現を正規オブジェクト rgx にコンパイルします。最後に、rgx.Match 関数を呼び出して ID 番号を照合します。照合が成功した場合は true を返し、そうでない場合は false を返します。
3. 概要
上記の紹介を通じて、正規表現を使用して golang で ID 番号の正当性を検証するのが非常に簡単であることがわかります。正規表現を定義し、それを regexp パッケージを使用して照合用の正規オブジェクトにコンパイルするだけです。もちろん、ID 番号のルールはさまざまなシナリオで変更される可能性があるため、特定のニーズに応じて正規表現を調整する必要があります。
以上がgolang で正規表現を使用して、入力が法的な身分証明書番号であるかどうかを確認するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。