
SSN Regex Python バリデーター
SSN Regex Python バリデーターを使って、米国の社会保障番号(SSN)を簡単に検証できます。このツールは Python の re モジュールを使い、正しい「AAA-GG-SSSS」形式を確認します。より広範な入力検証には、Email Regex Python バリデーター、電話番号 Regex Python バリデーター、Python Regex テスターもあわせてご利用ください。
SSN Regex Python バリデーター - ドキュメント
SSN Regex とは何ですか?
米国の社会保障番号(SSN)は次の標準フォーマットに従います。
XXX-XX-XXXX
各パートの意味:
XXX:エリア番号(3桁)
XX:グループ番号(2桁)
XXXX:シリアル番号(4桁)
このフォーマットは税務・法的目的の構造化された識別を保証します。regex を使うことで、入力文字列がこの形式に厳密に従っているかどうかを検証できます。
有効な SSN と見なされるには、文字列が次の基準をすべて満たす必要があります。
合計9桁、ハイフンで3つのパートに区切られます。
エリア番号(最初の3桁):000、666、または 900〜999 の値は使用できません。
グループ番号(中間の2桁):01〜99 の範囲で、00 は無効です。
シリアル番号(最後の4桁):0001〜9999 の範囲で、0000 は無効です。
これらのルールにより、適切に構造化され有効な可能性のある SSN のみが検証を通過し、エラーを減らしてデータの整合性を高めます。
SSN Regex パターン
適切にフォーマットされた SSN を検証するための典型的な regex パターンは次のとおりです。
^\d{3}-\d{2}-\d{4}$内訳:
^\d{3}: 先頭の3桁-: 1つ目のハイフン\d{2}: 2桁-: 2つ目のハイフン\d{4}$: 末尾の4桁
これにより、123-45-6789 のような厳密なフォーマットマッチングが保証されます。
Python コード例
import redef is_valid_ssn(ssn): pattern = re.compile(r'^\d{3}-\d{2}-\d{4}$') return bool(pattern.fullmatch(ssn))
テストケース
print(is_valid_ssn("123-45-6789")) # True print(is_valid_ssn("123456789")) # False print(is_valid_ssn("12-345-6789")) # False
regex のバリエーションは Python Regex テスターでテストできます。
時間・空間計算量
時間計算量: SSN 文字列の長さを N とすると O(N) です。regex エンジンが各文字を一度スキャンして形式を確認するためです。
空間計算量: 入力サイズに比例した追加データを保持する必要がないため O(1) です。
ユースケース
ユーザー本人確認:登録やオンボーディング時の正確な SSN 入力を保証します。
データクレンジング:データベース内の不正にフォーマットされた SSN を検出・修正します。
セキュリティとコンプライアンス:機密データ送信前に SSN フォーマットを検証します。
以下のツールと組み合わせることもできます。
Email Regex Python バリデーター - アカウント認証に
IP アドレス Regex Python バリデーター - システムセキュリティに
URL Regex Python バリデーター - フォーム入力フィールドの保護に
使用する Regex メタ文字
^: 文字列の先頭にアンカーします。\d: 任意の数字(0〜9)にマッチします。{n}: ちょうど n 桁にマッチします。-: SSN 内のリテラルハイフンにマッチします。$: 文字列の末尾にアンカーします。
プロのヒント
部分一致を避けるため、常に ^ と $ でパターンをアンカーしてください。
検証前にユーザー入力の空白をトリムするよう前処理してください。
無効な組み合わせ(000 や 666 など)を除外するために高度な regex や追加ロジックを使用できます。
プレーンな SSN は保存しないでください。検証後に暗号化してください。
デプロイ前に Python Regex テスターで試してみてください。
Frequently Asked Questions
この regex はハイフンあり・なし両方の SSN を検証できますか?
この regex は 000 や 666 のような無効・禁止された SSN の組み合わせを検出しますか?
政府や金融システムでの使用に十分なパターンですか?
ユーザーが SSN の前後に空白を入力した場合はどうなりますか?
このパターンをより大きなデータ検証パイプラインで使用できますか?
Related Articles






