Java中用正则表达式判断日期格式是否正确

时间:2023-03-09 00:01:18
Java中用正则表达式判断日期格式是否正确

1、Java中用正则表达式判断日期格式是否正确

DateType.java:

/**
 * @Title:DateType.java
 * @Package:com.you.dao
 * @Description:
 * @Author: 游海东
 * @date: 2014年3月8日 下午10:54:50
 * @Version V1.2.3
 */
package com.you.dao;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @类名:DateType
 * @描述:
 * @Author:游海东
 * @date: 2014年3月8日 下午10:54:50
 */
public class DateType
{
	/**
	 *
	 * @类名:DateSelect
	 * @描述:
	 * @Author:游海东
	 * @date: 2014年3月8日 下午11:09:37
	 */
	public static class DateSelect
	{
		public boolean isDate(String date)
		{
			/**
			 * 判断日期格式和范围
			 */
			String rexp = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";

			Pattern pat = Pattern.compile(rexp);  

			Matcher mat = pat.matcher(date);  

			boolean dateType = mat.matches();

			return dateType;
		}
	}

	/**
	 * @Title : main
	 * @Type : DateType
	 * @date : 2014年3月8日 下午10:54:50
	 * @Description :
	 * @param args
	 */
	public static void main(String[] args)
	{
		/**
		 * 日期格式正确
		 */
		String date1 = "2014-01-03";
		/**
		 * 日期范围不正确---平年二月没有29号
		 */
		String date2 = "2014-02-29";
		/**
		 * 日期月份范围不正确---月份没有13月
		 */
		String date3 = "2014-13-03";
		/**
		 * 日期范围不正确---六月没有31号
		 */
		String date4 = "2014-06-31";
		/**
		 * 日期范围不正确 ----1月超过31天
		 */
		String date5 = "2014-01-32";
		/**
		 * 这个测试年份
		 */
		String date6 = "0014-01-03";

		DateSelect date = new DateSelect();

		/**
		 * 打印正确日期格式
		 */
		System.out.println(date.isDate(date1));
		/**
		 * 打印date1
		 */
		System.out.println(date.isDate(date2));
		/**
		 * 打印date3
		 */
		System.out.println(date.isDate(date3));
		/**
		 * 打印date4
		 */
		System.out.println(date.isDate(date4));
		/**
		 * 打印date5
		 */
		System.out.println(date.isDate(date5));
		/**
		 * 打印date6
		 */
		System.out.println(date.isDate(date6));
	}

}

2、运行结果

true
false
false
false
false
true