Java 日期驗證 正則判斷
阿新 • • 發佈:2019-02-03
今天幫別人寫了一個學習用例,關於怎麼用 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("恭喜您 日期格式正確!");
}
}
}