Java의 java.util.regex 패키지는 문자 시퀀스에서 특정 패턴을 찾기 위한 다양한 클래스를 제공합니다.
패턴 이 패키지의 클래스는 정규 표현식의 컴파일된 표현입니다. 정규 표현식을 문자열과 일치시키기 위해 이 클래스는 다음과 같은 두 가지 방법을 제공합니다. -
-
컴파일() − 이 메소드는 정규 표현식을 나타내는 문자열을 받아 Pattern 객체의 객체를 반환합니다.
-
매처() − 이 메소드는 String 값을 받아 주어진 String을 현재 패턴 객체가 나타내는 패턴과 일치시키는 매처 객체를 생성합니다.
다음은 dd-MM-yyyy 형식의 날짜와 일치하는 정규식입니다.
^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$
따라서 MM-DD-YYYY 형식의 날짜 문자열을 확인하려면 -
-
compile()을 사용하여 위에서 언급한 정규식을 컴파일합니다. Pattern 클래스의 메소드를 호출하고 Pattern 객체를 검색합니다.
-
위에서 얻은 객체를 사용하여 matcher()를 호출합니다. 필요한 날짜 문자열을 매개변수로 전달하여 메서드를 호출하고 이 메서드에서 Matcher 개체를 검색합니다.
-
Matcher 클래스의 match()는 일치하는 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. 이전 단계에서 얻은 matcher 개체에서 이 메서드를 호출합니다.
예시
import java.util.regex.Matcher; import java.util.regex.Pattern; public class MatchingDate { public static void main(String[] args) { String date = "01/12/2019"; String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$"; //Creating a pattern object Pattern pattern = Pattern.compile(regex); //Matching the compiled pattern in the String Matcher matcher = pattern.matcher(date); boolean bool = matcher.matches(); if(bool) { System.out.println("Date is valid"); } else { System.out.println("Date is not valid"); } } }
출력
Date is valid