
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_EQとPattern.UNIX_LINESをサポートしています本番のJavaコードには、必ずIDEまたはJavaランタイム環境で
Pattern.compile()を使用してパターンを検証してください。
使い方:
正規表現を入力します。
テスト文字列を入力します。
ハイライトされたマッチとキャプチャグループを即座に確認します。
テスト入力が必要ですか?次のツールをお試しください:
Java regex クイックリファレンス / チートシート
Javaのregexパターンを記述する際のクイックルックアップ用にこの表をブックマークしてください:
パターン | 説明 | 例 | マッチ |
|---|---|---|---|
| 改行を除く任意の文字 |
| cat, cot, cut |
| 任意の数字 [0-9] |
| 123, 456 |
| 数字以外の任意の文字 |
| abc, hello |
| 単語文字 [a-zA-Z0-9_] |
| hello_42 |
| 単語文字以外 |
| @, #, ! |
| 空白(スペース、タブ、改行) |
| スペース、タブ |
| 空白以外 |
| hello |
| 文字列/行の先頭 |
| 先頭のHello |
| 文字列/行の末尾 |
| 末尾のworld |
| 単語境界 |
| cat(catsではない) |
| 文字クラス |
| 任意の母音 |
| 否定クラス |
| 数字以外 |
| 範囲 |
| 任意の文字 |
| 0回以上(貪欲) |
| ac, abc, abbc |
| 1回以上(貪欲) |
| abc, abbc |
| 0回または1回(省略可能) |
| color, colour |
| ちょうどn回 |
| 2024 |
| n回からm回 |
| 12, 123, 1234 |
| 0回以上(遅延) |
| 最短のタグ |
| キャプチャグループ |
| グループ: 12, 34 |
| 非キャプチャグループ |
| ab, abab |
| 肯定先読み |
| 5px の 5 |
| 否定先読み |
| barの前にないfoo |
| 肯定後読み |
| @後のドメイン |
| 否定後読み |
| 数字の後でないpx |
| 任意のUnicode文字 |
| Hello, 你好 |
| グループ1への後方参照 |
| hello hello |
Java regex 構文の基本
メタ文字
.: 改行文字以外の任意の1文字にマッチします。ワイルドカード文字として一般的に使用されます。^: 行または文字列の先頭にマッチをアンカーします。例:^abcは先頭にある場合のみabcにマッチします。$: 行または文字列の末尾にマッチをアンカーします。例:xyz$は末尾にある場合のみxyzにマッチします。|: 論理OR演算子として機能します。例:cat|dogはcatまたはdogにマッチします。
文字クラス
[abc]:a、b、またはcのいずれかの1文字にマッチします。[^abc]:a、b、c以外の任意の文字にマッチします。[a-zA-Z]: 範囲を指定し、aからzの大文字または小文字の任意の文字にマッチします。
事前定義された文字クラス
\d: 任意の数字にマッチします。[0-9]と同等です。\D: 数字以外の任意の文字にマッチします。[^0-9]と同等です。\s: 任意の空白文字(スペース、タブ、改行)にマッチします。\S: 空白以外の任意の文字にマッチします。\w: 任意の単語文字(文字、数字、アンダースコア)にマッチします。[a-zA-Z0-9_]と同等です。\W: 単語文字以外の任意の文字にマッチします。
量子
*: 前の要素に0回以上マッチします。例:lo*lはll、lol、loolなどにマッチします。+: 1回以上の出現にマッチします。例:lo+lはlol、loolにマッチしますが、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\1はhello 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. 強力なパスワードチェック
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 } }
数値検証の一般的なパターン
正規表現はさまざまな形式の数値を検証・解析するのに非常に役立ちます。以下はよく使われるパターンです:
パターン | 説明 | マッチ例 |
|---|---|---|
| 正の整数(任意の長さ) | 123, 987654 |
| 正の整数(最大10桁) | 42, 1234567890 |
| ちょうど5桁 | 12345 |
| 負の整数 | -123, -45678 |
| 任意の整数(正または負) | 42, -7 |
| 小数点が任意の数値 | 1234, -56.78, .25 |
| 小数点以下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で大文字小文字を区別しないregexにするにはどうすればよいですか?
Java regexを使用してメールアドレスを検証するにはどうすればよいですか?
貪欲量子と遅延量子の違いは何ですか?
このツールはJavaのregexエンジンを使用していますか?
regexを使用してさまざまなカードタイプのクレジットカード番号を検証するにはどうすればよいですか?
Related Articles






