黑马程序员技术交流社区

标题: 如何使用正则表达示来判断日期是否正确 [打印本页]

作者: SelonLiao    时间: 2014-10-14 14:53
标题: 如何使用正则表达示来判断日期是否正确
  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;

  3. public class RandomDemo {


  4.         public static void main(String[] args) {
  5.                
  6.                 //判断某个日期是否正确
  7.                
  8.                 //方法 1  使用字符分割来判断日期是否正确
  9.                 String source = "2014-2-31";
  10.                
  11.                 String[] vals = source.split("-");
  12.                
  13.                 int year = Integer.parseInt(vals[0]);
  14.                 int month = Integer.parseInt(vals[1]);
  15.                 int day = Integer.parseInt(vals[2]);
  16.                
  17.                 System.out.println("分割字符来判断日期是否正确的结果:");
  18.                 if(!(year>1999 && year<3014)) {
  19.                         System.out.println("年份输入错误");
  20.                 }
  21.                 else if(!(month>0&&month<=12)){
  22.                         System.out.println("月份输入错误");
  23.                 }
  24.                 else if(!(day>0&&day<32)){
  25.                         System.out.println("日份输入错误");
  26.                 }
  27.                 else if(month==2 && day==29) //如果是2月份,日期是29号
  28.                 {
  29.                         if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){ //那么判断是否为闰年
  30.                                 System.out.println("日期输入正确");   //如果是就正确
  31.                         } else{
  32.                                 System.out.println("日期输入错误");   //如果不是就错误
  33.                         }
  34.                 }
  35.                 else{
  36.                         System.out.println("日期输入正确");
  37.                 }
  38.                
  39.                 System.out.println("--------------------------------");
  40.                
  41.                 //方法2 使用正则来判断日期是否正确
  42.                 String num = "2014-2-31";
  43.                 System.out.println("使用正则来判断日期是否正确的结果:");
  44.                 Pattern datePat = Pattern.compile("[1-9]\\d\\d\\d[-]([0-9]|1[0-2])[-]([1-9]|2\\d|3[0-1])");
  45.                 Matcher result = datePat.matcher(num);
  46.                 if(!result.matches()){
  47.                         System.out.println("日期输入错误");
  48.                 }else{
  49.                         System.out.println("日期输入正确");
  50.                 }
  51.                
  52.                 //现在有一个问题,使用分割字符串后来判断,应该没什么问题
  53.                 //但是正则表达示,仅仅只能判断日期格式是否正确,应该怎么写正则表达示才能够验证闰年的情况呢?
  54.         }
  55. }
复制代码
现在的问题是,使用分割字符串后来判断日期的正确性,应该没什么问题
但是正则表达示,仅仅只能判断日期格式是否正确,应该怎么写正则表达示才能够验证闰年的情况呢?







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2