Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのPattern.matches()メソッドとは?使い方をサンプルコード付きで解説


Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。その中でもPatternクラスは、正規表現をコンパイルした状態で保持するクラスです。

Patternクラスのmatches()メソッドは、次の2つの引数を受け取ります。

  • 正規表現を表す文字列

  • 入力文字列を表すCharSequenceインターフェースのオブジェクト

このメソッドを呼び出すと、入力文字列全体が指定した正規表現と一致するかどうかが評価されます。戻り値はboolean型で、一致した場合はtrue、一致しなかった場合はfalseが返されます。

なお、matches()は静的メソッドのため、Patternオブジェクトを明示的に生成することなく、「Pattern.matches(正規表現, 入力文字列)」という形式で直接呼び出せる点も大きな特徴です。

サンプルコード:日付形式の妥当性チェック

以下の例では、ユーザーが入力した日付文字列が「dd/mm/yyyy」形式として有効かどうかを、matches()メソッドを使って判定します。

import java.util.Scanner;
import java.util.regex.Pattern;
public class MatchesExample {
    public static void main(String[] args) {
        // 日付文字列を入力として受け取る
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter date string in [dd/mm/yyy] format: ");
        String date = sc.next();
        String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";
        // 正規表現との照合を実行
        boolean result = Pattern.matches(regex, date);
        if(result) {
            System.out.println("Date is valid");
        } else {
            System.out.println("Date is not valid");
        }
    }
}

使用している正規表現の意味

  • (1[0-2]|0[1-9]) … 月の部分。「10〜12」または「01〜09」のいずれかに一致します。
  • (3[01]|[12][0-9]|0[1-9]) … 日の部分。「30・31」「10〜29」「01〜09」のいずれかに一致します。
  • [0-9]{4} … 年の部分。4桁の数字に一致します。

実行結果 1(有効な日付の場合)

Enter date string in [dd/mm/yyy] format:
01/12/2019
Date is valid

実行結果 2(無効な日付の場合)

Enter date string in [dd/mm/yyy] format:
2019-21-12
Date is not valid

2つ目の例では、区切り文字が「/」ではなく「-」になっているため、正規表現と一致せず「Date is not valid」と表示されます。このように、matches()メソッドを活用すれば、メールアドレスや電話番号、日付などの文字列フォーマット検証を簡潔に実装できます。


  1. 【Java】Pattern.compile()メソッドの使い方を具体例でわかりやすく解説

    java.util.regex パッケージに含まれる Pattern クラスは、正規表現をコンパイルした結果を表すクラスです。このクラスが持つ compile() メソッドは、正規表現を表す文字列を受け取り、その正規表現をコンパイルした Pattern オブジェクトを返します。 基本的な構文 compile() メソッドの最もシンプルな形式は、引数として正規表現の文字列を1つ受け取ります。 Pattern pattern = Pattern.compile(regex); コンパイル済みの Pattern オブジェクトから matcher() メソッドを呼び出すことで Matcher オブジェ

  2. JavaのMatcher.matches()メソッドとは?使い方をサンプルコード付きで解説

    java.util.regex.Matcherクラスは、正規表現を用いたさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使ってオブジェクトを取得します。 matches()メソッドは、対象の文字列全体が、Patternオブジェクトの作成時に指定された正規表現パターンと一致するかどうかを判定します。一致する場合はtrueを返し、一致しない場合はfalseを返します。重要なポイントとして、このメソッドがtrueを返すためには、検索対象の領域全体がパターンに一致し