Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะตรวจสอบรูปแบบวันที่ที่กำหนดเช่น MM-DD-YYYY โดยใช้ regex ใน java ได้อย่างไร


แพ็คเกจ java.util.regex ของ java มีคลาสที่หลากหลายเพื่อค้นหารูปแบบเฉพาะในลำดับอักขระ

รูปแบบ คลาสของแพ็คเกจนี้เป็นการแสดงนิพจน์ทั่วไปที่คอมไพล์แล้ว ในการจับคู่นิพจน์ทั่วไปกับสตริง คลาสนี้จะมีสองวิธีคือ −

  • คอมไพล์() − เมธอดนี้ยอมรับสตริงที่แสดงนิพจน์ทั่วไปและส่งคืนอ็อบเจ็กต์ของออบเจกต์ Pattern

  • ตัวจับคู่() − เมธอดนี้ยอมรับค่าสตริงและสร้างอ็อบเจ็กต์ที่จับคู่ซึ่งตรงกับสตริงที่กำหนดกับรูปแบบที่แสดงโดยอ็อบเจ็กต์รูปแบบปัจจุบัน

ต่อไปนี้เป็นนิพจน์ทั่วไปที่จะจับคู่วันที่ในรูปแบบ dd-MM-yyyy:

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

ดังนั้น ในการตรวจสอบวันที่ สตริงของรูปแบบ MM-DD-YYYY

  • รวบรวมนิพจน์ทั่วไปที่กล่าวถึงข้างต้นโดยใช้ คอมไพล์() เมธอดของคลาส Pattern และดึงออบเจ็กต์ Pattern

  • ใช้วัตถุที่ได้รับข้างต้น เรียกใช้ matcher() โดยส่งสตริงวันที่ที่ต้องการเป็นพารามิเตอร์และดึงวัตถุ Matcher จากวิธีนี้

  • การจับคู่ () ของคลาส 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