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 객체 생성 없이 간단히 정규식 검사를 수행할 수 있는 편리한 방법입니다. 위 예제처럼 날짜 형식 검증뿐만 아니라 이메일, 전화번호 등 다양한 입력값 유효성 검사에 활용할 수 있습니다.