Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Pattern.matches() 메서드 완벽 가이드: 예제로 배우는 정규식 매칭

Java의 java.util.regex 패키지는 문자 시퀀스에서 특정 패턴을 찾기 위한 다양한 클래스를 제공합니다. 이 패키지의 Pattern 클래스는 정규 표현식(regular expression)의 컴파일된 표현체 역할을 합니다.

matches() 메서드란?

Pattern 클래스의 matches() 메서드는 다음 두 가지 인자를 받습니다.

  • 정규 표현식을 나타내는 문자열(String)
  • 입력 문자열을 나타내는 CharSequence 객체

이 메서드가 호출되면 입력 문자열을 정규 표현식과 대조하여 일치 여부를 검사합니다. 반환값은 boolean 타입으로, 패턴이 일치하면 true, 일치하지 않으면 false를 리턴합니다.

사용 예제: 날짜 형식 검증하기

아래 예제는 사용자가 입력한 날짜 문자열이 [dd/mm/yyyy] 형식에 맞는지 정규 표현식으로 검증하는 코드입니다.

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("[dd/mm/yyyy] 형식으로 날짜를 입력하세요: ");
        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("유효한 날짜입니다");
        } else {
            System.out.println("유효하지 않은 날짜입니다");
        }
    }
}

실행 결과 1 — 유효한 날짜

[dd/mm/yyyy] 형식으로 날짜를 입력하세요:
01/12/2019
유효한 날짜입니다

실행 결과 2 — 잘못된 형식

[dd/mm/yyyy] 형식으로 날짜를 입력하세요:
2019-21-12
유효하지 않은 날짜입니다

정리

Pattern.matches(regex, input) 메서드는 별도의 Matcher 객체 생성 없이 간단히 정규식 검사를 수행할 수 있는 편리한 방법입니다. 위 예제처럼 날짜 형식 검증뿐만 아니라 이메일, 전화번호 등 다양한 입력값 유효성 검사에 활용할 수 있습니다.