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

IP Address Regex Javaバリデーター

IP Address Regex Javaバリデーターは、Java開発者が入力文字列が有効なIPv4またはIPv6アドレスであるかを確認するのに役立ちます。バックエンドバリデーション、フォーム入力、ファイアウォール、ネットワークユーティリティ、およびIPロジックを扱うあらゆるアプリケーションに便利です。


関連するJavaツールもご利用ください:


IP Address Regex Javaバリデーター - ドキュメント

IPアドレスとは何ですか?

IP(インターネットプロトコル)アドレスはネットワーク上のデバイスの一意の識別子です。2つのフォーマットがあります:

  • IPv4:4つの10進数オクテット(例:192.168.0.1)

  • IPv6:8つの16進数ブロック(例: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)(\\.|$)){4}$

説明:

  • 4つの数字ブロックを確認します

  • 各ブロックは0〜255の範囲です

  • ピリオドがブロックを区切ります

IPv4アドレスの仕組みの詳細:

  • 25[0-5]:250〜255にマッチ

  • 2[0-4]\d:200〜249にマッチ

  • 1\d\d:100〜199にマッチ

  • [1-9]?\d:0〜99にマッチ(先頭ゼロなしの1桁または2桁を処理)

これらのパターンにより、各オクテット(ドット間の値)が0〜255の有効な数字であることが保証されます。グループはリテラルのピリオドで区切られ、パターン全体でIPv4標準が要求する4つのオクテットが強制されます。


IPv6 Regexパターン:

^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$

説明:

  • 1〜4桁の16進数の8グループを確認します

  • グループはコロンで区切られます

JavaScriptの例:IPアドレスの検証

JavaScriptでIPアドレスを検証する場合、正規表現が最適です。IPv4とIPv6の両方のアドレスをregexでチェックする方法を簡単に説明します。

// Regular expressions for IPv4 and IPv6
const ipv4Pattern = /^((25[0-5]2[0-4]\d1\d\d[1-9]?\d)(\.$)){4}$/;
const ipv6Pattern = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/;

/**

  • Validates whether a given string is a valid IPv4 or IPv6 address.
  • @param {string} ip - IP address to validate.
  • @returns {string} - The type of IP address or 'Invalid IP'. */ function validateIPAddress(ip) { if (ipv4Pattern.test(ip)) { return "Valid IPv4 Address"; } if (ipv6Pattern.test(ip)) { return "Valid IPv6 Address"; } return "Invalid IP"; }

// Try it out with a few examples: console.log(validateIPAddress("127.0.0.1")); // Valid IPv4 Address console.log(validateIPAddress("2001:0db8:85a3:0000:0000:8a2e:0370:7334")); // Valid IPv6 Address console.log(validateIPAddress("300.168.0.1")); // Invalid IP

Javaコード例(IPv4)

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class IPv4Validator { public static void main(String[] args) { String ip = "192.168.1.1"; String ipv4Regex = "^((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.|$)){4}$";

    Pattern pattern = Pattern.compile(ipv4Regex);
    Matcher matcher = pattern.matcher(ip);

    if (matcher.matches()) {
        System.out.println("Valid IPv4 Address");
    } else {
        System.out.println("Invalid IPv4 Address");
    }
}

}

一般的な検証シナリオ

テストケース1

  • 入力:000.12.12.034

  • 出力:true

テストケース2

  • 入力:121.234.12.12

  • 出力:true

テストケース3

  • 入力:000.12.234.23.23

  • 出力:false

テストケース4

  • 入力:I.Am.not.an.ip

  • 出力:false

Javaコード例(IPv6)

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class IPv6Validator { public static void main(String[] args) { String ip = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"; String ipv6Regex = "^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$";

    Pattern pattern = Pattern.compile(ipv6Regex);
    Matcher matcher = pattern.matcher(ip);

    if (matcher.matches()) {
        System.out.println("Valid IPv6 Address");
    } else {
        System.out.println("Invalid IPv6 Address");
    }
}

}

サンプル入力

有効なIPv4:

  • 127.0.0.1

  • 192.168.100.100

無効なIPv4:

  • 256.300.888.1

  • 192.168.1

有効なIPv6:

  • 2001:0db8:85a3:0000:0000:8a2e:0370:7334

  • fe80::1ff:fe23:4567:890a

無効なIPv6:

  • 2001:db8:85a3::8a2e:370g:7334(無効な文字)

  • 1234:5678:90ab(短すぎる)

追加の例:

入力

出力

203.120.223.13

Valid IPv4

000.12.234.23.23

Invalid IP

2F33:12a0:3Ea0:0302

Invalid IP

I.Am.not.an.ip

Invalid IP

パフォーマンスの考慮事項

時間計算量:
これらの正規表現を使ったIPアドレスの検証は線形時間、つまりO(N)(Nは入力文字列の長さ)で動作します。パターンは各文字を一度スキャンするため、長いアドレスに対しても効率的です。

空間計算量:
空間使用量はO(1)のまま一定です。regexエンジンは入力サイズに比例する追加メモリを必要とせず、マッチングとキャプチャグループの追跡に固定量のみ使用します。

ユースケース

  • ログイン試行のトラッキング:失敗または成功したログインのIPを記録します。

  • Geo IP処理:IPに基づいてユーザーの場所をマッピングします。

  • APIホワイトリスト登録:許可リストに対して受信IPを検証します。

  • フォームバリデーション:管理パネルやダッシュボードで正しくフォーマットされたIPのみを受け付けます。

プロのヒント

  • 混乱を避けるため、IPv4とIPv6に別々のregexを使用してください。

  • バリデーション前に入力をクリーンにしてください(例:空白のトリミング)。

  • regexのみに依存しないでください。フォーマット検証後、InetAddress.getByName()を使ってルーティング可能な状態を確認します。

  • ジオロケーションやアクセス制御などセキュリティ上重要な操作に、ユーザーが送信したIPを信頼しないでください。

  • データベースにIPを一貫したフォーマット(完全形式または短縮形式のIPv6)で保存してください。

  • カスタムバリエーション(CIDRの範囲など)のテストと微調整にはJava regex テスターをご利用ください。

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

Frequently Asked Questions

このバリデーターはIPv4とIPv6の両方をサポートしますか?

はい、ただし各フォーマットに別々のregexパターンを使用する必要があります。

このregexだけでIPが存在するか確認できますか?

いいえ、regexはフォーマットのみを検証します。存在確認にはDNSやネットワークツールを使用してください。

IPv4での先頭ゼロは有効ですか?

技術的にはOKですが、曖昧な場合があります。一部のシステムでは誤解釈されることがあります。

圧縮形式のIPv6を検証できますか?

このregexは完全フォーマットのみサポートしています。圧縮形式(::)が必要な場合はパターンを変更してください。

IPを文字列と数値のどちらで保存すべきですか?

可読性のために文字列として保存してください。ただしインデックス化によるパフォーマンスが必要な場合(CIDRチェックなど)は数値も検討できます。

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

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