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("恭喜您 日期格式正确!"); } } }
相关文章推荐
- 正则表达式 - java验证IP地址 - java验证日期时间,解决润月 - java验证邮箱格式
- 验证日期的正则表达式加入闰年的判断以及思路分析
- Java正则验证电话,手机,邮箱,日期,金额的方法示例
- Java中用正则表达式判断日期格式是否正确
- Java中用正则表达式判断日期格式是否正确
- 你在Java中用正则表达式判断日期字符串是否正确吗?
- java正则表达式验证整数、浮点数和日期
- java正则表达式验证整数、浮点数和日期
- java正则表达式验证整数、浮点数和日期(转)
- JAVA日期验证 正则表达式,包括润二月(转)
- java基于正则表达式实现时间日期的常用判断操作实例
- 最全的Java中正则表达式验证日期格式
- java正则验证电话,手机,邮箱,日期,金额
- Java - 华为机试训练 - 密码验证合格程序(正则表达式判断)
- Java杂谈之正则表达式--日期,邮箱,数字验证
- Android工具类,一些方法电话正则,是否为空,日期格式化,星期,车牌,身份证校验,设置地区编码,验证日期字符串是否是YYYY-MM-DD格式,判断字符串是否为数字
- java实现正则表达式判断日期
- 验证日期的Java正则表达式
- Java日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】
- 最全的Java中正则表达式验证日期格式