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/2410.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アドレスの設定ファイルをスキャンする場合。

試してみる — Regex Cheat Sheet

フルツールを開く