NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
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が安全ですぐに実行できるテストに変換します。