G2 Best Software 2026、急成長部門一覧を見る
Java RegExテスター

Java RegExテスター

Qodex Java RegExテスターを使用して、java.util.regexエンジンを搭載したJavaの正規表現を即座にテスト・デバッグできます。マッチのハイライト、キャプチャグループ、構文エラーの検出をリアルタイムでフィードバックするため、メール検証、パスワードマッチング、パターンベースの文字列解析などのタスクに最適です。


ログインフォーム、入力バリデーター、カスタムパーサーを構築する場合でも、このツールはJavaのregexワークフローを効率化します。包括的なテストには、メールジェネレーターUUIDジェネレーター、またはパスワードジェネレーターと組み合わせてリアルなテスト入力を生成してください。


特定のフィールドの調整には、メールRegex Javaバリデーター電話番号Regex Javaバリデーターを使用して、パターンが正確で本番環境に対応していることを確認してください。

Java RegExテスター - ドキュメント

Java regexテスター

QodexのJava regexテスターは、Javaのjava.util.regexパッケージを使用して正規表現をリアルタイムで記述、テスト、デバッグするための開発者向けツールです。メール、パスワード、電話番号、日付、クレジットカードなどのパターンをインスタントにテストできます。

ライブのマッチ結果、キャプチャグループ、構文フィードバックを即座に確認でき、Javaコードで使用する前にregexを簡単に改善できます。

重要なお知らせ: このツールはブラウザでJavaScriptのregexエンジンを使用して実行されており、Javaのjava.util.regexとはいくつかの点で異なります。注意すべき主な違い:

  • 所有量子*+++?+)はJavaでサポートされていますが、JavaScriptではサポートされていません

  • アトミックグループ(?>...))はJavaで動作しますが、JavaScriptでは動作しません

  • Unicode プロパティクラス\p{IsGreek}\p{Sc}など)はJavaでより広範なサポートがあります

  • 後方参照の構文は置換文字列で異なります: Javaは$1を使用し、JavaScriptも$1を使用しますが、Javaはパターン内で\1もサポートします

  • フラグ: JavaはJS相当のないPattern.CANON_EQPattern.UNIX_LINESをサポートしています

本番のJavaコードには、必ずIDEまたはJavaランタイム環境でPattern.compile()を使用してパターンを検証してください。

使い方:

  1. 正規表現を入力します。

  2. テスト文字列を入力します。

  3. ハイライトされたマッチとキャプチャグループを即座に確認します。

テスト入力が必要ですか?次のツールをお試しください:

Java regex クイックリファレンス / チートシート

Javaのregexパターンを記述する際のクイックルックアップ用にこの表をブックマークしてください:

パターン

説明

マッチ

.

改行を除く任意の文字

c.t

cat, cot, cut

\d

任意の数字 [0-9]

\d{3}

123, 456

\D

数字以外の任意の文字

\D+

abc, hello

\w

単語文字 [a-zA-Z0-9_]

\w+

hello_42

\W

単語文字以外

\W

@, #, !

\s

空白(スペース、タブ、改行)

\s+

スペース、タブ

\S

空白以外

\S+

hello

^

文字列/行の先頭

^Hello

先頭のHello

$

文字列/行の末尾

world$

末尾のworld

\b

単語境界

\bcat\b

cat(catsではない)

[abc]

文字クラス

[aeiou]

任意の母音

[^abc]

否定クラス

[^0-9]

数字以外

[a-z]

範囲

[a-zA-Z]

任意の文字

*

0回以上(貪欲)

ab*c

ac, abc, abbc

+

1回以上(貪欲)

ab+c

abc, abbc

?

0回または1回(省略可能)

colou?r

color, colour

{n}

ちょうどn回

\d{4}

2024

{n,m}

n回からm回

\d{2,4}

12, 123, 1234

*?

0回以上(遅延)

<.*?>

最短のタグ

(abc)

キャプチャグループ

(\d+)-(\d+)

グループ: 12, 34

(?:abc)

非キャプチャグループ

(?:ab)+

ab, abab

(?=...)

肯定先読み

\d(?=px)

5px の 5

(?!...)

否定先読み

foo(?!bar)

barの前にないfoo

(?<=...)

肯定後読み

(?<=@)\w+

@後のドメイン

(?<!...)

否定後読み

(?<!\d)px

数字の後でないpx

\p{L}

任意のUnicode文字

\p{L}+

Hello, 你好

\1

グループ1への後方参照

(\w+)\s\1

hello hello

Java regex 構文の基本

メタ文字

  • .: 改行文字以外の任意の1文字にマッチします。ワイルドカード文字として一般的に使用されます。

  • ^: 行または文字列の先頭にマッチをアンカーします。例: ^abcは先頭にある場合のみabcにマッチします。

  • $: 行または文字列の末尾にマッチをアンカーします。例: xyz$は末尾にある場合のみxyzにマッチします。

  • |: 論理OR演算子として機能します。例: cat|dogはcatまたはdogにマッチします。

文字クラス

  • [abc]: ab、またはcのいずれかの1文字にマッチします。

  • [^abc]: abc以外の任意の文字にマッチします。

  • [a-zA-Z]: 範囲を指定し、aからzの大文字または小文字の任意の文字にマッチします。

事前定義された文字クラス

  • \d: 任意の数字にマッチします。[0-9]と同等です。

  • \D: 数字以外の任意の文字にマッチします。[^0-9]と同等です。

  • \s: 任意の空白文字(スペース、タブ、改行)にマッチします。

  • \S: 空白以外の任意の文字にマッチします。

  • \w: 任意の単語文字(文字、数字、アンダースコア)にマッチします。[a-zA-Z0-9_]と同等です。

  • \W: 単語文字以外の任意の文字にマッチします。

量子

  • *: 前の要素に0回以上マッチします。例: lo*llllolloolなどにマッチします。

  • +: 1回以上の出現にマッチします。例: lo+llolloolにマッチしますが、llにはマッチしません。

  • ?: 0回または1回の出現にマッチします。量子の後に置かれると遅延にもなります。

  • {n}: ちょうどn回の出現にマッチします。例: a{3}aaaにマッチします。

  • {n,}: n回以上の出現にマッチします。

  • {n,m}: n回からm回の出現にマッチします。

グループとキャプチャ

  • (abc): abcのマッチをキャプチャしてグループ化します。後方参照で再利用できます。

  • (?:abc): キャプチャせずにabcをグループ化します。参照を作成せずに量子を適用するのに便利です。

  • (?i)abc: グループの大文字小文字を区別しないマッチングを有効にします。

  • \b: 単語境界。

  • \B: 単語以外の境界。

  • \1\2など: キャプチャグループへの後方参照。例: (\w+)\s\1hello helloのような繰り返し単語にマッチします。

論理アサーション(先読みと後読み)

  • (?=...): 肯定先読み。現在位置の後がパターンにマッチすることを確認します。例: \d(?=px)pxが続く場合のみ数字にマッチします。

  • (?!...): 否定先読み。後続の文字がパターンにマッチしないことを確認します。例: foo(?!bar)barが続かない場合のみfooにマッチします。

  • (?<=...): 肯定後読み。現在位置の前がパターンにマッチすることを確認します。例: (?<=@)\w+@の後のユーザー名にマッチします。

  • (?<!...): 否定後読み。前の文字がマッチしないことを確認します。

貪欲量子と遅延量子

  • *?: できるだけ少なく、0回以上マッチします。

  • +?: できるだけ少なく、1回以上マッチします。

  • ??: できるだけ少なく、0回または1回マッチします。

  • {n,m}?: n回からm回マッチし、できるだけ小さいマッチを選択します。

遅延量子は、特にネストされたタグや繰り返しの区切り文字の場合に、テキストを過度に消費しないようにするのに役立ちます。

Unicode サポート

  • \p{L}: 任意の言語の任意の種類の文字にマッチします。

  • \p{N}: 任意の種類の数字文字にマッチします。

  • \p{IsGreek}: ギリシャ語のUnicodeブロック内の任意の文字にマッチします。

  • \P{...}: \p{...}の逆です。

Unicodeプロパティにより、regexがグローバルに機能します。国際的なアプリケーションに最適です。

Java regex の一般的な例

以下の各例には、IDEにコピーして実行できる完全なJavaコードが含まれています。

1. メール検証

メールRegex Javaバリデーターと組み合わせて使用

import java.util.regex.*;

public class EmailValidator {
    public static void main(String[] args) {
        String email = "test@example.com";
        Pattern pattern = Pattern.compile("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$");
        Matcher matcher = pattern.matcher(email);
        System.out.println("Email valid: " + matcher.matches()); // true
    }
}

2. 強力なパスワードチェック

パスワードRegex Javaバリデーターでテスト

import java.util.regex.*;

public class PasswordValidator {
    public static void main(String[] args) {
        String password = "Str0ng@Pass!";
        String regex = "(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}";
        boolean isStrong = password.matches(regex);
        System.out.println("Password strong: " + isStrong); // true
    }
}

3. 電話番号の形式

(123) 456-7890、1234567890、123-456-7890 に対応:

import java.util.regex.*;

public class PhoneValidator {
    public static void main(String[] args) {
        String[] phones = {"(123) 456-7890", "1234567890", "123-456-7890"};
        Pattern pattern = Pattern.compile(
            "^(\\d{10}|\\(\\d{3}\\)[\\s.-]?\\d{3}[\\s.-]\\d{4}|\\d{3}[\\s.-]\\d{3}[\\s.-]\\d{4})$"
        );
        for (String phone : phones) {
            System.out.println(phone + " valid: " + pattern.matcher(phone).matches());
        }
    }
}

4. クレジットカードパターンマッチング(Visa)

完全な検証にはクレジットカードRegex JavaバリデーターとLuhnチェックを使用してください。

import java.util.regex.*;

public class CreditCardValidator {
    public static void main(String[] args) {
        String card = "4111111111111111";
        Pattern visa = Pattern.compile("^4[0-9]{12}(?:[0-9]{3})?$");
        System.out.println("Visa valid: " + visa.matcher(card).matches()); // true
    }
}

5. 日付形式(ISO / US)

Regexは形式のみをチェックします。カレンダーの検証(うるう年など)にはJavaの日付ライブラリを使用してください。

import java.util.regex.*;

public class DateValidator {
    public static void main(String[] args) {
        String isoDate = "2024-12-25";
        String usDate = "12/25/2024";

        Pattern isoPattern = Pattern.compile("\\d{4}-\\d{2}-\\d{2}");
        Pattern usPattern = Pattern.compile("\\d{2}/\\d{2}/\\d{4}");

        System.out.println("ISO valid: " + isoPattern.matcher(isoDate).matches()); // true
        System.out.println("US valid: " + usPattern.matcher(usDate).matches());     // true
    }
}

6. Windowsパスからファイル名を抽出

import java.util.regex.*;

public class FilenameExtractor {
    public static void main(String[] args) {
        String path = "C:\\Users\\Bob\\Documents\\presentation_final.pptx";
        Pattern pattern = Pattern.compile("[^\\\\]+$");
        Matcher matcher = pattern.matcher(path);
        if (matcher.find()) {
            System.out.println("Filename: " + matcher.group()); // presentation_final.pptx
        }
    }
}

7. IPv4アドレスの検証

import java.util.regex.*;

public class IPv4Validator {
    public static void main(String[] args) {
        String ip = "192.168.1.1";
        String regex = "^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$";
        System.out.println(ip + " valid: " + ip.matches(regex)); // true

        String badIp = "999.999.999.999";
        System.out.println(badIp + " valid: " + badIp.matches(regex)); // false
    }
}

8. 24時間形式(HH:MM)の検証

import java.util.regex.*;

public class TimeValidator {
    public static void main(String[] args) {
        String[] times = {"14:45", "09:02", "24:00", "00:00"};
        Pattern pattern = Pattern.compile("^([01]\\d|2[0-3]):[0-5]\\d$");
        for (String time : times) {
            System.out.println(time + " valid: " + pattern.matcher(time).matches());
        }
        // 14:45 valid: true
        // 09:02 valid: true
        // 24:00 valid: false
        // 00:00 valid: true
    }
}

9. 16進数カラーの検証

import java.util.regex.*;

public class HexColorValidator {
    public static void main(String[] args) {
        String[] colors = {"#1a2B3c", "123", "#ABCDEF", "#zzz", "FFF0A"};
        Pattern hexPattern = Pattern.compile("^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$");
        for (String color : colors) {
            Matcher matcher = hexPattern.matcher(color);
            System.out.println(color + " is valid hex: " + matcher.matches());
        }
    }
}

10. SSN / ZIP コードのパターン

形式チェックのみです。以下のパターンを使用してください:

import java.util.regex.*;

public class FormatValidator {
    public static void main(String[] args) {
        // SSN: 123-45-6789 または 123456789
        String ssn = "123-45-6789";
        System.out.println("SSN valid: " + ssn.matches("^\\d{3}-?\\d{2}-?\\d{4}$")); // true

        // ZIP+4: 12345 または 12345-6789
        String zip = "12345-6789";
        System.out.println("ZIP valid: " + zip.matches("^\\d{5}(-\\d{4})?$")); // true

        // カナダの郵便番号: A1B 2C3
        String postal = "K1A 0B1";
        System.out.println("Postal valid: " + postal.matches(
            "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z]\\s?\\d[ABCEGHJ-NPRSTV-Z]\\d$"
        )); // true
    }
}

11. 文字列からHTMLタグを削除

import java.util.regex.*;

public class HtmlStripper {
    public static void main(String[] args) {
        String html = "<p>Hello <b>World</b></p>";
        String cleaned = html.replaceAll("<[^>]+>", "");
        System.out.println(cleaned); // Hello World
    }
}

12. 文字列から空白行を削除

import java.util.regex.*;

public class BlankLineRemover {
    public static void main(String[] args) {
        String messyText = "Line one.\n\n\nLine two after blanks.\n\nLine three.";
        String cleaned = messyText.replaceAll("(?m)^\\s*$\\n+", "");
        System.out.println(cleaned);
        // Line one.
        // Line two after blanks.
        // Line three.
    }
}

13. フィートとインチの表記の検証

import java.util.regex.*;

public class HeightValidator {
    public static void main(String[] args) {
        String[] heights = {"6'2\"", "5'11\"", "0'0\"", "6'13\""};
        Pattern pattern = Pattern.compile("^\\d+'(\\d|1[01])\"$");
        for (String h : heights) {
            System.out.println(h + " valid: " + pattern.matcher(h).matches());
        }
        // 6'2" valid: true
        // 5'11" valid: true
        // 0'0" valid: true
        // 6'13" valid: false
    }
}

数値検証の一般的なパターン

正規表現はさまざまな形式の数値を検証・解析するのに非常に役立ちます。以下はよく使われるパターンです:

パターン

説明

マッチ例

^\d+$

正の整数(任意の長さ)

123, 987654

^\d{1,10}$

正の整数(最大10桁)

42, 1234567890

^\d{5}$

ちょうど5桁

12345

^-\d+$

負の整数

-123, -45678

^-?\d+$

任意の整数(正または負)

42, -7

^-?\d*\.?\d+$

小数点が任意の数値

1234, -56.78, .25

^-?\d*\.\d{2}$

小数点以下2桁

42.00, -3.14

重要なヒント

  • Java文字列では常にregex文字を2回エスケープしてください(例: リテラルのドットにマッチするには\\.)。

  • 参照が不要な場合は非キャプチャグループを優先してください。

  • JSON、HTML、XMLなどの構造化形式の解析にregexを使用しないでください。代わりにパーサーを使用してください。

  • パフォーマンス向上のためにPattern.compile()を一度だけ使用し、コンパイル済みパターンを再利用してください。

  • DOTALLモードが必要なマルチライン マッチングには.の代わりに[\s\S]を使用してください。

Javaでさらにregexパターンをテストする:

他の言語でテストしたいですか?次のツールをお試しください:

Frequently Asked Questions

JavaコードでregexパターンはどのようにI記述しますか?

java.util.regexのPattern.compile()とMatcherを使用してregexを定義・適用します。

文字列がパターンに完全にマッチするかをどうやって確認しますか?

"yourString".matches("yourPattern")を使用してフルマッチを確認します。

Javaで大文字小文字を区別しないregexにするにはどうすればよいですか?

パターンに(?i)フラグを使用するか、Pattern.CASE_INSENSITIVEを使用します。

Java regexを使用してメールアドレスを検証するにはどうすればよいですか?

パターン^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$を使用します。

貪欲量子と遅延量子の違いは何ですか?

貪欲はできるだけ多くマッチし、遅延はできるだけ少なくマッチします。量子の後に?を追加すると遅延になります(例: *の代わりに*?)。

このツールはJavaのregexエンジンを使用していますか?

このツールはブラウザでJavaScriptのregexエンジンを使用して実行されており、Javaに似ていますがいくつかの違いがあります。所有量子(*+、++)、アトミックグループ(?>...)、一部のUnicodeプロパティ(\p{IsGreek})はJavaでは動作しますがJavaScriptでは動作しません。重要なパターンは常にJavaランタイムで検証してください。

regexを使用してさまざまなカードタイプのクレジットカード番号を検証するにはどうすればよいですか?

カード固有のプレフィックスパターンを使用します: Visaは4で始まり(13または16桁)、MasterCardは51〜55で始まり(16桁)、AmExは34または37で始まります(15桁)。実際の検証ではregexの形式チェックとLuhnアルゴリズムを常に組み合わせてください。

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

平易な日本語で入力するだけで、Qodexが安全ですぐに実行できるテストに変換します。