ホームページ >バックエンド開発 >Golang >golang で正規表現を使用して、入力が中国本土の居住者 ID 番号であるかどうかを確認する方法

golang で正規表現を使用して、入力が中国本土の居住者 ID 番号であるかどうかを確認する方法

PHPz
PHPzオリジナル
2023-06-24 08:49:00841ブラウズ

Golang では、正規表現を使用して、入力が中国本土の居住者 ID 番号であるかどうかを確認します。これを実現するには、Go 言語に組み込まれている正規表現ライブラリ regexp の正規表現マッチング関数 MatchString() を使用できます。

中国本土の住民 ID カード番号は 18 桁の数字と文字で構成されており、最初の 17 桁は市外局番と生年月日、最後の桁はチェック コードです。入力が有効な ID 番号であるかどうかを検証するには、ID 番号の形式要件を満たしているかどうかを検証する必要があります。

次は、入力が ID 番号の形式要件を満たしているかどうかを照合するために使用される基本的な正規表現です:

^([1-9]\d{5})(\d{4})(0[1-9]|1[0-2])([0-2][1-9]|[1-3]\d|4[0-6]|5[0-2])(\d{3})(\d|[Xx])$

このうち、^ は入力文字列の先頭を表し、$ は入力文字列の先頭を表します。入力文字列 末尾の()は以下の部分を照合することを示します。

  • [1-9]\d{5}: 地方の市外局番 (1 ~ 6 桁) を示します。最初の桁は 1 ~ 9 の数字である必要があり、次の 5 桁は任意の数字にすることができます。任意の数になります。
  • \d{4}: 誕生年(7~10桁)を示します。
  • (0[1-9]|1[0-2]): 誕生月 (11 桁目から 12 桁目) を示します。つまり、01 から 12 までの数字でなければなりません。
  • (0-2|[1-3]\d|4[0-6]|5[0-2]): 生年月日(13~14桁目)を示します。 01~数字の31である必要があります。
  • \d{3}: 個人のシーケンス番号 (15 ~ 17 桁) を示します。これは、ランダムに割り当てられた 3 桁の番号です。
  • (\d|[Xx]): チェック コード (18 桁目) を示します。数字または大文字の「X」を使用できます。

上記の正規表現をコードに書き込みます:

func isIDCardNumber(str string) bool {
    regIDCard := "^([1-9]\d{5})(\d{4})(0[1-9]|1[0-2])([0-2][1-9]|[1-3]\d|4[0-6]|5[0-2])(\d{3})(\d|[Xx])$"
    reg := regexp.MustCompile(regIDCard)
    return reg.MatchString(str)
}

上記のコードでは、Regexp.MustCompile() メソッドを使用して正規表現を Regexp インスタンスにコンパイルします。 reg .MatchString() メソッドを使用して入力文字列と一致させます。

最後に、プログラムでこの関数を使用して、入力が有効な ID 番号であるかどうかを確認します:

func main() {
    idCardNumber := "411281199601017891" // 合法身份证号码
    if isIDCardNumber(idCardNumber) {
        fmt.Println("输入是有效的身份证号码")
    } else {
        fmt.Println("输入不是有效的身份证号码")
    }
}

つまり、Golang の正規表現を使用して、中国本土の居住者 ID 番号を確認します。入力の合法性と正確性を保証し、より完全なアプリケーションを開発するための強固な基盤を築きます。

以上がgolang で正規表現を使用して、入力が中国本土の居住者 ID 番号であるかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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