Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 정규식을 사용하여 MM-DD-YYYY와 같은 지정된 날짜 형식의 유효성을 검사하는 방법은 무엇입니까?

<시간/>

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