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

Chấp nhận chuỗi ngày (định dạng MM-dd-yyyy) bằng cách sử dụng Java regex?


Sau đây là biểu thức chính quy để khớp với 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}$

Để khớp một ngày trong một chuỗi ở định dạng đó.

  • Biên dịch biểu thức trên của phương thức compile () của lớp Pattern.

  • Lấy đối tượng Matcher bỏ qua chuỗi đầu vào bắt buộc làm tham số cho phương thức matcher () của lớp Pattern.

  • Phương thức match () của lớp Matcher trả về true nếu một so khớp xảy ra khác thì nó trả về false. Do đó, hãy gọi phương thức này để xác thực dữ liệu.

Ví dụ 1

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

Phương thức match () của lớp String chấp nhận một biểu thức chính quy và so khớp chuỗi hiện tại với nó và trả về true trong trường hợp so khớp và phương thức khác trả về false. Do đó, để xác minh xem ngày đã cho (ở định dạng chuỗi) có ở định dạng bắt buộc hay không -

  • Lấy chuỗi ngày.
  • Gọi phương thức match () trên đó bằng cách chuyển biểu thức chính quy ở trên làm tham số cho nó.

Ví dụ 2

import java.util.Scanner;
public class Just {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your name: ");
      String name = sc.nextLine();
      System.out.println("Enter your Date of birth: ");
      String dob = sc.nextLine();
      //Regular expression to accept date in MM-DD-YYY format
      String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";
      boolean result = dob.matches(regex);
      if(result) {
         System.out.println("Given date of birth is valid");
      } else {
         System.out.println("Given date of birth is not valid");
      }
   }
}

Đầu ra 1

Enter your name:
Janaki
Enter your Date of birth:
26/09/1989
Given date of birth is not valid

Đầu ra 2

Enter your name:
Janaki
Enter your Date of birth:
09/26/1989
Given date of birth is valid