NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
SSN Regex Go Validator

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 main

import ( "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フィールドのクリーンアップと標準化。

  • コンプライアンスシステム:プライバシーに関わるワークフローのフォーマット検証を強制。

組み合わせをお勧めするツール

他の言語向けの Regex


他の言語でSSNをテストしたい場合:

Frequently Asked Questions

この regex はSSNが本物かどうか確認できますか?

いいえ。SSNが正しくフォーマットされているかのみを確認し、発行済みかどうかは検証しません。

GoでSSNバリデーションに regex を使う理由は?

Regex はカスタムロジックを書かずにフォーマットルールを適用するためのシンプルで効率的な方法を提供します。

ダッシュなしでSSNを入力した場合はどうなりますか?

現在のパターンはダッシュを必要とします。必要に応じてプレーンな数字を受け入れるように変更できます。

バリデーション後にSSNを安全に保存できますか?

SSNは安全に保存する必要があります(可能であれば暗号化して)。バリデーションは保存の安全性を意味しません。

本番システムで使用できますか?

はい。ただし、単独のチェックとしてではなく、より広いバリデーションとセキュリティ戦略の一部として組み込むべきです。

APIのテストを今日から始めましょう!

平易な日本語で書くだけで、Qodexが安全ですぐに実行できるテストに変換します。