IPv4 と IPv6 アドレスマッチングの正規表現
IPv4アドレス(オプションの範囲検証付き)とIPv6アドレスのマッチング用正規表現パターン。実用例と避けるべき一般的な落とし穴を含みます。
Common Patterns
詳細な説明
正規表現によるIPアドレスマッチング
IPアドレスのマッチングには、IPv4とIPv6形式で異なるアプローチが必要です。
基本的なIPv4パターン
\b\d{1,3}(?:\.\d{1,3}){3}\b
これは一般的な形式にマッチしますが、各オクテットが0-255の範囲にあることは検証しません。999.999.999.999 のような無効なアドレスにもマッチします。
検証付きIPv4パターン
各オクテットが0から255の間であることを検証するには:
\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b
オクテットパターンの分解:
25[0-5]は250-255にマッチ2[0-4]\dは200-249にマッチ[01]?\d\d?は0-199にマッチ
CIDR表記付きIPv4
オプションのサブネットマスク付きIPアドレスにマッチ:
\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)(?:/[0-9]{1,2})?\b
マッチ例:192.168.1.0/24、10.0.0.1/8
基本的なIPv6パターン
IPv6アドレスは省略ルールのため、はるかに複雑です:
(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}
これはフルフォームのIPv6のみにマッチします。:: による省略形式には大幅に複雑なパターンが必要です。
実用的なアドバイス
本番環境では、正規表現ではなくプログラミング言語の組み込みIP解析関数の使用を検討してください。JavaScriptでは、専用ライブラリや URL コンストラクタを使用してより信頼性の高いIP検証が可能です。
ユースケース
サーバーログを解析してIPアドレスを抽出する場合、IP入力を検証する必要があるネットワークツールを構築する場合、または環境変数に移動すべきハードコードされたIPアドレスの設定ファイルをスキャンする場合。