Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để xác thực các định dạng ngày nhất định như MM-DD-YYYY bằng cách sử dụng regex trong java?

Gói java.util.regex của java cung cấp nhiều lớp khác nhau để tìm các mẫu cụ thể trong chuỗi ký tự.

Mẫu lớp của gói này là một đại diện đã biên dịch của một biểu thức chính quy. Để đối sánh một biểu thức chính quy với một Chuỗi, lớp này cung cấp hai phương thức cụ thể là -

  • biên dịch () - Phương thức này chấp nhận một chuỗi đại diện cho một biểu thức chính quy và trả về một đối tượng của đối tượng Pattern.

  • trình đối sánh () - Phương thức này chấp nhận một giá trị Chuỗi và tạo một đối tượng đối sánh khớp với Chuỗi đã cho với mẫu được đại diện bởi đối tượng mẫu hiện tại.

Sau đây là biểu thức chính quy để khớp ngày ở định dạng dd-MM-yyyy:

^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$

Do đó, để xác thực Chuỗi ngày có định dạng MM-DD-YYYY -

  • Biên dịch biểu thức chính quy được đề cập ở trên bằng cách sử dụng compile () của lớp Pattern và truy xuất đối tượng Pattern.

  • Sử dụng đối tượng có được ở trên, gọi matcher () bằng cách chuyển chuỗi ngày bắt buộc làm tham số và truy xuất đối tượng Matcher từ phương thức này.

  • Các so khớp () của lớp Matcher trả về true trong trường hợp so khớp khác, nó trả về false. Gọi phương thức này trên đối tượng so khớp có được từ bước trước.

Ví dụ

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");
      }
   }
}

Đầu ra

Date is valid