Java 日期验证 正则判断

来源:互联网 发布:金融数据公司 编辑:程序博客网 时间:2024/06/07 01:56

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