您的位置:首页 > 编程语言 > Java开发

Java 日期验证 正则判断

2017-11-10 22:45 316 查看

今天帮别人写了一个学习用例,关于怎么用 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("恭喜您 日期格式正确!");
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: