
SSN Regex Go バリデーター
フォームバリデーションやAPIテストで米国社会保障番号(SSN)を確認する必要がありますか?Qodex SSN Regex Go バリデーターを使えば、標準フォーマットに対するSSNの検証が即座に行えます。ユーザー名ジェネレーター、電話番号ジェネレーター、住所ジェネレーターと組み合わせて、Goアプリケーションのテスト用にリアルなユーザーデータをシミュレーションできます。
SSN Regex Go バリデーター - ドキュメント
SSN Regex とは何ですか?
Go(Golang)では、正規表現は組み込みの regexp パッケージで処理され、テキストを精確にマッチング・検証できます。
米国の社会保障番号(SSN)には固定フォーマットがあります:AAA-GG-SSSS。
AAA はエリア番号(3桁)
GG はグループ番号(2桁)
SSSS はシリアル番号(4桁)
この構造の検証には、次のパターンを使った regex が有効です:
^\d{3}-\d{2}-\d{4}$このパターンが確認する内容:
3桁の数字
ダッシュ
2桁の数字
ダッシュ
4桁の数字
マスクされたSSNの受け入れ
プライバシー保護やテスト目的でSSNをマスクした形式(XXX-XX-XXXX)に遭遇することもあります。標準形式とマスク形式の両方に対応するには:
^(\d{3}-\d{2}-\d{4}XXX-XX-XXXX)$
これにより有効な数値SSNまたは完全マスク形式のどちらにもマッチします。
より正確なSSNバリデーション
基本的な構造チェックに加え、実世界のSSNにはさらにルールがあります。エリア番号 000、666、9で始まる番号、グループ番号 00、シリアル番号 0000 などは無効です。より厳格な検証には:
^(?!(0006669))\d{3}-(?!00)\d{2}-(?!0000)\d{4}$
このパターンは無効なブロックを防ぎつつSSNフォーマットにマッチします。
柔軟な入力のサポート
任意のダッシュや大文字小文字両方の「x」をマスクSSNで許容するには:
^(\d{3}-?\d{2}-?\d{4}[Xx]{3}-?[Xx]{2}-?[Xx]{4})$
または言語がサポートしていれば大文字小文字を区別しないフラグを追加してください。
まとめ
厳格な数値SSNには基本パターンを使用。
マスク形式を許容するには拡張パターンを使用。
より強固なバリデーションには厳格なパターンを使用。
アプリケーションのニーズに応じてマスキングと柔軟性を調整。
regex はSSNバリデーションの実用的な手段ですが、ビジネスルールはさまざまであり、ユースケースによっては追加のチェックが必要になる場合があります。
入力例
この regex がキャッチするものとスキップするものを理解するためのサンプル入力と結果:
✔️ 有効なSSNフォーマット
✔️ 有効だがダッシュの代わりにスペース
✔️ 有効なSSNフォーマット
❌ 無効、文字が含まれる
✔️ 有効だが制限されたSSN範囲に該当する可能性あり
✔️ 有効なパターンだが実際のSSNではない
❌ 無効、エリア番号が 000 であることはできない
Regex フラグについて
Go または JavaScript で regex を使う際によく見かけるフラグの早見表:
g(グローバル):最初だけでなくテキスト内のすべてのマッチを検索。
i(大文字小文字無視):大文字と小文字を同一視してマッチング。
m(マルチライン):
^と$を文字列全体の先頭末尾ではなく各行の先頭末尾にマッチさせる。s(dotAll):ドット(
.)が改行文字にもマッチするようにし、パターンが複数行にまたがれるようにする。u(unicode):完全なUnicodeマッチングを有効化。絵文字や非英語文字の処理が容易になる。
y(sticky):前のマッチが終わった最後のインデックスでのみマッチ。文字列を一度に一つずつ反復する場合に便利。
無効なSSNのブロック方法
米国SSNには有効でない組み合わせがあり、regex パターンは一般的な無効フォーマットをキャッチします:
全ゼログループの拒否:いずれかのグループが全てゼロのSSN(000-XX-XXXX、XXX-00-XXXX、XXX-XX-0000など)は受け入れません。
666始まりの拒否:666で始まるSSNは常に拒否されます。この番号列は実際のSSNには割り当てられません。
900〜999範囲の拒否:900〜999で始まるSSNも対象外です。これらは予約済みで標準IDとしては無効です。
実際のSSNとマスクされたSSNのパターン
本物のSSNとマスクされたプレースホルダー(Xを使用)の両方を受け入れる必要がある場合は、regex を拡張してどちらの形式にも対応できます:
標準SSNのマッチ:
^\d{3}-\d{2}-\d{4}$マスクSSNのマッチ:
^X{3}-X{2}-X{4}$
どちらの形式も許容するにはOR演算子で組み合わせます。大文字小文字を問わず「x」を受け入れる場合はフラグまたは [Xx] を使用してください。
Goのコード例
package mainimport ( "fmt" "regexp" )
func isValidSSN(ssn string) bool { // Regex for U.S. SSN: 3 digits - 2 digits - 4 digits var ssnRegex = regexp.MustCompile(
^\d{3}-\d{2}-\d{4}$) return ssnRegex.MatchString(ssn) }
func main() { testSSN := "123-45-6789" fmt.Printf("Is '%s' a valid SSN? %t\n", testSSN, isValidSSN(testSSN)) }
Regex の大文字小文字を区別しない設定
マスクされたSSNで大文字と小文字両方の「X」(「XXX-XX-1234」や「xxx-xx-1234」など)にマッチさせるには:
マスクが現れる箇所に
[Xx]を含めてパターンに両方の場合を含める。Goの regex コンテキストがサポートする場合、大文字小文字を区別しないフラグ(
i)を使用する。
GoのregexpパッケージはインラインのCase-insensitiveフラグをサポートしないため、パターンに [Xx] を指定する必要があります。
Goで SSN Regex を使うためのプロのヒント
アンカーを使ったフルマッチ:^ と $ で regex を囲み、部分文字列ではなく文字列全体が検証されるようにしてください。
テストでは実データを使わない:テスト環境では実際のSSNを絶対に使用しないでください。ユーザー名ジェネレーター、電話番号ジェネレーター、住所ジェネレーターでモックプロファイルを作成してください。
パフォーマンスのためにプリコンパイル:大規模アプリケーションでは、ループや関数の外で regexp.MustCompile() を使ってプリコンパイルしてください。
フォーマットを検証、本人確認ではない:Regex は構造のみをチェックします。実際のSSNを検証するには公的データベースや検証APIと連携してください。
デバッグにはログを活用:GoのRegexロジックテスト中は、マッチと不一致を追跡するためにログを追加してください。
基本バリデーションを超えた高度な検証
より堅牢な検証のための厳格な regex:
^(?!(0006669))\d{3}-(?!00)\d{2}-(?!0000)\d{4}$
このパターンが追加するルール:
000、666、または9で始まるエリア番号の拒否。
00のグループ番号の拒否。
0000のシリアル番号の拒否。
一般的なユースケース
フォームバリデーション:ユーザーが正しいフォーマットでSSNを入力することを確認。
オンボーディングシステム:ユーザー登録時の本人確認。
データクレンジング:データベースのSSNフィールドのクリーンアップと標準化。
コンプライアンスシステム:プライバシーに関わるワークフローのフォーマット検証を強制。
組み合わせをお勧めするツール
電話番号ジェネレーター - SSNと組み合わせる米国電話番号を生成。
住所ジェネレーター - モックユーザーデータ用の偽でもリアルな米国住所を作成。
メールジェネレーター - フォームテスト用の完全なユーザープロファイルを構築。
UUID ジェネレーター - 各モックユーザーに一意のIDを割り当て。
MAC アドレスジェネレーター - デバイスベースのアイデンティティシミュレーションに便利。
Go 用 Regex テスター - Goアプリケーションでパターンを直接検証。
他の言語向けの Regex
他の言語でSSNをテストしたい場合:
JavaScript: JavaScript Regex テスターで使用
Python: Python Regex テスターで試す
Java: Java Regex テスターで検証
Frequently Asked Questions
この regex はSSNが本物かどうか確認できますか?
GoでSSNバリデーションに regex を使う理由は?
ダッシュなしでSSNを入力した場合はどうなりますか?
バリデーション後にSSNを安全に保存できますか?
本番システムで使用できますか?
Related Articles






