
IP Address Regex Goバリデーター
IP Address Regex Goバリデーターを使用して、IPv4およびIPv6アドレスを正確に検証します。ログのクリーニング、ユーザーデータの検証、またはセキュアなシステムの構築に最適です。Go regex テスターと組み合わせるか、URLバリデーター、メールバリデーター、GUIDバリデーターとペアリングして、完全な入力バリデーションを実現します。
IP Address Regex Goバリデーター - ドキュメント
はじめに:IP Address Regexとは?
Goにおいて、正規表現(regex)はIPアドレスのようなパターンを検証する強力な手段です。IPはネットワークベースのシステムにおいて根幹をなす要素であり、ユーザー情報の保存、ファイアウォールの設定、またはWebアプリケーションの構築に欠かせません。
IPアドレスには2種類あります:
IPv4(例:192.168.1.1)
IPv6(例:2001:0db8:85a3:0000:0000:8a2e:0370:7334)
IP Address Regexパターン
IPv4 Regexパターン
^(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$対応Regexフレーバー
これらのIPv4 regexパターンは、Go、Python、JavaScript、.NET、Java、Perl、Ruby、PCREなど、現代の主要なregexエンジンで動作します。バックエンドコード、スクリプト、またはAPIにバリデーションを統合する際も、ほとんどの主要な開発環境で一貫した動作が期待できます。
説明:
ドットで区切られた4つのオクテットを検証します。
各オクテットは0〜255の範囲です。
マッチ例:192.168.0.1
IPv4バリデーションの補足
以下のようなシンプルなパターンを見かけることもあります:
^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$
これはドットで区切られた1〜3桁の4つのグループにマッチしますが、各オクテットの範囲を0〜255に制限しないため、無効なIPアドレスもパスしてしまいます。上記のregexは各オクテットが有効なIPv4の範囲内であることを保証するため、より正確です。このパターンは.NET、Java、JavaScript、PCRE、Perl、Python、Rubyをはじめとする主要なregexフレーバーで対応しています。
シンプルなIPv4 Regexと精度の高いIPv4 Regexの比較
IPv4アドレスを検証する際、シンプルなパターンと精度の高いパターンの2種類があります。特にデータ品質を重視する場合、この違いを理解することが重要です。
シンプルなIPv4 Regex:
基本的なregexは^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$のようになります。ドットで区切られた1〜3桁の4つのグループを確認しますが、999.999.999.999や256.100.100.100のような無効なアドレスもマッチしてしまいます。つまり、構造のみを確認し、各オクテットの有効性は確認しません。
精度の高いIPv4 Regex:
より正確なパターンは各オクテットが0〜255の間であることを保証し、一般的なミスを検出します。例えば:^(25[0-5]2[0-4]\d1\d\d[1-9]?\d)(\.(25[0-5]2[0-4]\d1\d\d[1-9]?\d)){3}$
これは複雑に見えますが、300.1.1.1や256.256.256.256のような入力を確実に拒否します。ファイアウォール設定やユーザー登録など、確実なバリデーションが必要な場合はこちらを使用してください。
まとめると:
シンプルなregex:高速ですが、無効なアドレスを通過させます。
精度の高いregex:やや複雑ですが、すべてのアドレスが真に有効なIPv4であることを保証します。
Regexを使ってテキストからIPv4アドレスを抽出する
生のログやテキストの塊からIPv4アドレスを取り出す必要がありますか?正規表現を使えば、手動でスキャンすることなく効率的にこのタスクを実行できます。
基本抽出のクイックパターン
有効性に関わらずIPv4アドレスに見えるシーケンスにマッチするには:
\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b\bで単語全体のマッチを保証し、部分的な数字を拾わないようにします。ドットで区切られた1〜3桁の4セットを確認します。
より厳密なパターン
各オクテットが0〜255の範囲内の構文的に有効なIPv4アドレスのみを抽出する場合:
\b(?:(?:25[0-5]2[0-4][0-9]1\d\d[1-9]?\d)\.){3}
(?:25[0-5]2[0-4][0-9]1\d\d[1-9]?\d)\bこのパターンは各オクテットの数値上限を確認し、偽陽性を減らします。
Go、Python、JavaScript、PCREなどの主要なregexエンジンで動作します。
例:Log: Failed attempt from 192.168.99.120 at noonの場合、厳密なパターンは192.168.99.120を抽出します。
IPv6 Regexパターン
^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$
説明:
コロンで区切られた16進数の8グループにマッチします。
各グループは1〜4桁の16進数です。
マッチ例:2001:0db8:85a3:0000:0000:8a2e:0370:7334
GoのRegexを使ってIPを検証する方法
Goの組み込みregexpパッケージを使用してパターンをコンパイルし、文字列をテストします:
package mainimport ( "fmt" "regexp" )
func isValidIPv4(ip string) bool { ipv4Pattern :=
^(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$regex := regexp.MustCompile(ipv4Pattern) return regex.MatchString(ip) }func isValidIPv6(ip string) bool { ipv6Pattern :=
^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$regex := regexp.MustCompile(ipv6Pattern) return regex.MatchString(ip) }func main() { testIPs := []string{ "192.168.1.1", // valid IPv4 "256.300.88.1", // invalid IPv4 "2001:0db8:85a3:0000:0000:8a2e:0370:7334", // valid IPv6 "2001:db8::1", // invalid (compressed, unsupported here) }
for _, ip := range testIPs { fmt.Printf("IP: %s | IPv4: %t | IPv6: %t\n", ip, isValidIPv4(ip), isValidIPv6(ip)) }
}
オプション:IPv4アドレスを32ビット整数に変換する
IPv4アドレスを検証したら、効率的なストレージ、クイック比較、または低レベルのネットワーキングAPIとの連携のために32ビット整数に変換する必要があるかもしれません。
Goでの変換方法:
import ( "fmt" "strconv" "strings" )
func ipv4ToInt(ip string) (uint32, error) { octets := strings.Split(ip, ".") if len(octets) != 4 { return 0, fmt.Errorf("invalid IPv4 address") } var result uint32 for i := 0; i < 4; i++ { octet, err := strconv.Atoi(octets[i]) if err != nil octet < 0 octet > 255 { return 0, fmt.Errorf("invalid octet in IPv4 address") } result = (result << 8) uint32(octet) } return result, nil }
IP Address Regex検証のユースケース
ユーザーIPのトラッキング:ログや分析ツールに保存する前にIPを検証します。
アクセス制御:ホワイトリストに登録されたIP範囲からのリクエストのみを許可します。
ネットワーク設定:セットアップやプロビジョニング中のIPバリデーションを自動化します。
データクリーンアップ:不正または破損したIPレコードを含むデータセットを標準化します。
プロのヒント
IPv6バリデーションは必要な場合のみ使用してください。多くのシステムは現在もIPv4が主流です。
Regexは予約済みまたはローカルIP(127.0.0.1や::1など)ではなく、フォーマットのみを検証します。
圧縮形式のIPv6(::1など)を扱う場合は、完全な解析のためにnetパッケージの使用を検討してください。
Go regex テスターでIPパターンを微調整してエッジケースをテストします。
組み合わせをお勧めするツール
IP Address Regex Goバリデーターを次のツールと組み合わせてご利用ください:
Password Regex Goバリデーター:ユーザー認証情報のセキュア化
Email Regex Goバリデーター:IPと連絡先データの検証
URL Regex Goバリデーター:IPに紐づいたURLの確認
Go regex テスター:IPパターンを直接テスト
GUID Regex Goバリデーター:リソース識別子の検証
Frequently Asked Questions
このバリデーターはIPv4とIPv6を区別できますか?
192.168.1.0/24のようなCIDR表記に対応していますか?
IPv6でツールは大文字と小文字を区別しますか?
圧縮形式のIPv6(例:::1)に対応していますか?
予約済みまたはプライベートIPの範囲を検出できますか?
Related Articles






