1. 程式人生 > >Java 日期驗證 正則判斷

Java 日期驗證 正則判斷

今天幫別人寫了一個學習用例,關於怎麼用 Java對一個日期進行正則表示式的判斷並輸出結果的,既然寫好一份了,那就順便放上來,希望可以適合剛入門學習的小夥伴們參考。

思路:

    先判斷   年  月  日  這三者符合最基本的條件
    年:0000-9999 四位數
    月:01-12 可以有01或1這種格式的
    日:01-31 可以有01或1這種格式的
    若這個判斷不通過直接 false

    第二個判斷 閏年 此時已經可以大體分為 閏年塊 和 平年塊分別有針對的判斷2月這個特殊月份 

    第三個也就是最後,對大月小月的判斷啦  這個時候已經不考慮2月了。至此打印出結果至控制檯
END
package com.wwz.test;

import java.util.Scanner;

/**
 * 輸入日期 並進行驗證格式是否正確
 */
public class FDate {

    /**
     * 檢查是否是閏年
     * 
     * @param year
     * @return
     */
    public static boolean run(int year) {
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {// 是閏年
            System.out.print(year + "是閏年!  "
); return true; } else { return false; } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] data = new String[3]; boolean flag = true; // 若不符合規則將值改為false String year = "[0-9]{4}";// 年 String month = "[0-9]||0[0-9]||1[12]"
;// 月 String day = "[0-9]||[0-2][0-9]||3[01]";// 天 System.out.println("請輸入日期:"); int YEAR = 0; String str = sc.next();// 輸入的字串 data = str.split("[-/.+]"); // 最基本的檢查格式 begin if (!data[0].matches(year)) { System.out.println("年不對 請重新輸入"); flag = false; } if (!data[1].matches(month)) { System.out.println("月不對 請重新輸入"); flag = false; } if (!data[2].matches(day)) { System.out.println("日不對 請重新輸入"); flag = false; } // end YEAR = Integer.valueOf(data[0]); boolean run = run(YEAR);// run 為true是閏年否則是 非閏年 if (run) {// 閏年 if (data[1].matches("0[2]||2")) {// 這裡是閏年的2月 if (!data[2].matches("0[1-9]||[1-9]||1[0-9]||2[0-9]")) { flag = false; System.out.println("2月份的天數不對喔!"); } } } else {// 非閏年 if (data[1].matches("0[2]||2")) {// 這裡是平年的2月 if (!data[2].matches("0[1-9]||[1-9]||1[0-9]||2[0-8]")) { flag = false; System.out.println("2月份的天數不對喔!"); } } } // 下面判斷除了2月份的大小月天數 if (data[1].matches("0[13578]||[13578]||1[02]")) {// 這裡是大月 if (!data[2].matches("0[1-9]||[1-9]||[12][0-9]||3[01]")) { flag = false; System.out.println(data[2] + " 天數不對喔!"); } } else if (data[1].matches("0[469]||[469]||11")) {// 這裡是小月 if (!data[2].matches("0[1-9]||[1-9]||[12][0-9]||30")) { flag = false; System.out.println(data[2] + " 天數不對喔!"); } } if (flag) { System.out.println("恭喜您 日期格式正確!"); } } }