NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
IP Address Regex Goバリデーター

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.999256.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.1256.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 main

import ( "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バリデーターを次のツールと組み合わせてご利用ください:

Frequently Asked Questions

このバリデーターはIPv4とIPv6を区別できますか?

はい、各フォーマットに対して別々のregexパターンを使用し、独立してマッチングします。

192.168.1.0/24のようなCIDR表記に対応していますか?

いいえ、このツールは正確なIPアドレスフォーマットの検証に焦点を当てています。CIDRには異なるロジックが必要です。

IPv6でツールは大文字と小文字を区別しますか?

いいえ、バリデーターは大文字と小文字の両方の16進数をサポートしています。

圧縮形式のIPv6(例:::1)に対応していますか?

regexだけでは対応していません。圧縮形式にはGoのnet.ParseIP()の使用を検討してください。

予約済みまたはプライベートIPの範囲を検出できますか?

いいえ、regexはパターンのみを確認し、IPアドレスの意味やクラスは確認しません。

APIを今すぐテストしましょう!

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