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

Regular Expression สำหรับตรวจสอบวันที่และเวลาใน Java


เพื่อจับคู่ regular expression กับสตริงที่กำหนด ต้องทำตามขั้นตอนดังนี้:

  1. คอมไพล์ regular expression ด้วยเมธอด compile() ของคลาส Pattern
  2. สร้างอ็อบเจกต์ Matcher โดยส่งสตริงนำเข้าให้เมธอด matcher() ของ Pattern
  3. ใช้เมธอด matches() ของ Matcher ซึ่งคืนค่า true หากจับคู่ได้ false หากไม่จับคู่

ตัวอย่าง: Regex สำหรับวันที่ (รูปแบบ YYYY-MM-DD)

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Sample {
    public static void main(String args[]) {
        List<String> dates = new ArrayList<>();
        dates.add("25-12-1990");
        dates.add("25/12/1990");
        dates.add("2010-06-24 06:30");
        dates.add("05-02-1990");
        dates.add("1920-11-03 12:40");
        
        // Regex สำหรับวันที่ YYYY-MM-DD
        String regex = "[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])";
        
        Pattern pattern = Pattern.compile(regex);
        
        for (String date : dates) {
            Matcher matcher = pattern.matcher(date);
            System.out.println(date + ": " + matcher.matches());
        }
    }
}

ผลลัพธ์

25-12-1990: false
25/12/1990: false
2010-06-24: true
05-02-1990: false
1920-11-03: true

คำอธิบาย: Regex นี้รับเฉพาะรูปแบบ YYYY-MM-DD เท่านั้น จึงไม่จับคู่กับ DD-MM-YYYY หรือรูปแบบที่มี slash

ตัวอย่าง: Regex สำหรับวันที่และเวลา (YYYY-MM-DD HH:MM:SS)

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Sample {
    public static void main(String args[]) {
        List<String> dates = new ArrayList<>();
        dates.add("25-12-1990");
        dates.add("25/12/1990");
        dates.add("2010-06-24 12:30:40");
        dates.add("05-02-1990 44:205:40");
        dates.add("1920-11-03 06:25:40");
        
        // Regex สำหรับวันที่และเวลา
        String regex = "[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9]";
        
        Pattern pattern = Pattern.compile(regex);
        
        for (String date : dates) {
            Matcher matcher = pattern.matcher(date);
            System.out.println(date + ": " + matcher.matches());
        }
    }
}

ผลลัพธ์

25-12-1990: false
25/12/1990: false
2010-06-24 12:30:40: true
05-02-1990 44:205:40: false
1920-11-03 06:25:40: true

การแยกส่วนของ Regex วันที่และเวลา

ส่วนความหมาย
[0-9]{4}ปี 4 หลัก
(0[1-9]|1[0-2])เดือน 01-12
(0[1-9]|[1-2][0-9]|3[0-1])วันที่ 01-31
(2[0-3]|[01][0-9])ชั่วโมง 00-23
[0-5][0-9]นาที/วินาที 00-59

หมายเหตุ: Regex นี้ตรวจสอบรูปแบบเท่านั้น ไม่ตรวจสอบความถูกต้องของวันที่จริง (เช่น 31 กุมภาพันธ์ จะผ่านการตรวจสอบ regex แต่เป็นวันที่ไม่มีจริง)