精华内容
下载资源
问答
  • * @param 日期验证,验证的格式有: * "yyyyMM","yyyyMMdd","yyyyMMdd HH:mm:ss", * "yyyy-MM","yyyy-MM-dd","yyyy-MM-dd HH:mm:ss" * "yyyy.MM","yyyy.MM.dd","yyyy.MM.dd HH:mm:ss" * "yyyy/MM","yyyy/MM/dd...
  • 正则表达式校验日期时间格式

    千次阅读 2020-12-18 09:30:04
    1、合法的日期范围: DateTime值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间。 2、平年和闰年 地球绕太阳公转一周叫做...

    目录

     

    日期部分校验

    概念

    校验yyyyMMdd

    校验yyyy-MM-dd

    时间部分校验

    校验HHmmss

    校验HH-mm-ss

    校验日期+时间部分

    校验yyyyMMddHHmmss

    校验 yyyy-MM-dd HH:mm:ss

    应用举例


    日期部分校验

    概念

    首先,我们先了解2个概念:

    1、合法的日期范围:

        DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间。

    2、平年和闰年

    地球绕太阳公转一周叫做一回归年,一回归年长365日5时48分 46秒。因此,公历规定有平年和闰年,平年一年有365日,比回归年短0.2422日,四年共短0.9688日,故每四年增加一日,这一年有366日,就 是闰年。但四年增加一日比四个回归年又多0.0312日,400年后将多3.12日,故在400年中少设3个闰年,也就是在400年中只设97个闰年,这样公历年的平均长度与回归年就相近似了。由此规定:年份是整百数的必须是400的倍数才是闰年,例如1900年、2100年就不是闰年。

    验证YYYY年份:

    \d{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3}

    验证MMDD月日:

    大月(1、3、5、7、8、10、12月,有31天)

    (0[13578]|1[02])(0[1-9]|[12]\d|3[01])

    小月(4、6、9、11月,有30天)

    (0[469]|11)(0[1-9]|[12]\d|30)

    平年2月(有28天)

    02(0[1-9]|[1]\d|2[0-8])

    闰年:

    能被4整除但不能被100整除的年份

    (\d{2})(0[48]|[2468][048]|[13579][26])

    能被400整除的年份

    ((0[48]|[2468][048]|[3579][26])00)

    闰年2月(有29天)

    ((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229

    校验yyyyMMdd

    最终,验证YYYYMMDD的正则表达式为

    ((\d{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3})(((0[13578]|1[02])(0[1-9]|[12]\d|3[01]))|((0[469]|11)(0[1-9]|[12]\d|30))|(02(0[1-9]|[1]\d|2[0-8]))))|(((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)

     

    校验yyyy-MM-dd

    精确到日即可,即年月日,格式:yyyy-MM-dd,例如:2016-12-13

    ((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))
    

    时间部分校验

     

    校验HHmmss

    校验时分秒:格式:HHmmss

    ([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])

    校验HH-mm-ss

    校验时分秒:格式:HH-mm-ss

    ([0-1]?[0-9]|2[0-3])-([0-5][0-9])-([0-5][0-9])

     

    校验日期+时间部分

    校验yyyyMMddHHmmss

    ((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])
    

    校验 yyyy-MM-dd HH:mm:ss

    校验 yyyy-MM-dd HH:mm:ss(日期和时间之间有一个或多个空格)

    ((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])
    

     

    应用举例

    卫生数据元校验

                         case "D8":
                            if(!value_str.matches("((\\d{3}[1-9]|\\d{2}[1-9]\\d|\\d[1-9]\\d{2}|[1-9]\\d{3})(((0[13578]|1[02])(0[1-9]|[12]\\d|3[01]))|((0[469]|11)(0[1-9]|[12]\\d|30))|(02(0[1-9]|[1]\\d|2[0-8]))))|(((\\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)")){
                                valid = false;
                                tipInfo = "不符合日期格式yyyyMMdd";
                                break;
                            }
                            break;
                        case "T6":
                            if(!value_str.matches("([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])")){
                                valid = false;
                                tipInfo = "不符合时间格式HHmmss";
                                break;
                            }
                            break;
                        case "DT15":
                            if(!value_str.matches("(((\\d{3}[1-9]|\\d{2}[1-9]\\d|\\d[1-9]\\d{2}|[1-9]\\d{3})(((0[13578]|1[02])(0[1-9]|[12]\\d|3[01]))|((0[469]|11)(0[1-9]|[12]\\d|30))|(02(0[1-9]|[1]\\d|2[0-8]))))|(((\\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))(T)(([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9]))")){
                                valid = false;
                                tipInfo = "不符合日期时间格式yyyyMMddTHHmmss";
                                break;
                            }
                            break;

    参考文章:

    https://www.cnblogs.com/Alisa68/p/13208704.html

    https://www.cnblogs.com/yyy-blog/p/10593983.html

     

    展开全文
  • 今天校验日期格式,故记录下; 一、校验yyyy年MM月; /**yyyy年MM月 或者 yyyy年M月**/ private static final String MONTH_REGEX = "^([1-9]\\d{3}年)(([0]{0,1}[1-9]月)|([1][0-2]月))$"; /*** * @desc ...

    今天校验了日期格式,故记录下;
    一、校验yyyy年MM月;

    	 /**yyyy年MM月 或者 yyyy年M月**/
        private static final String MONTH_REGEX = "^([1-9]\\d{3}年)(([0]{0,1}[1-9]月)|([1][0-2]月))$";
        
     	/***
         * @desc 校验月份的格式,格式如下,yyyy年MM月或者yyyy年M月
         * 如:2020年10月  或者   2020年09月   或者   2020年9月
         * @author fzdepqq
         * @date 2020-05-28 18:51
         * @param
         * @param month:校验的月份
         * @return boolean
         */
        public static boolean validMonthEffecitive(String month) throws Exception{
    
            boolean matches =  Pattern.matches(MONTH_REGEX, month);
            return matches;
        }
    

    二、校验yyyy-MM-dd;

     	/**yyyy-MM-dd 或者 yyyy-M-dd**/
        private static String DATE_REGEX = "^([1-9]\\d{3}-)(([0]{0,1}[1-9]-)|([1][0-2]-))(([0-3]{0,1}[0-9]))$";
        
    	/***
         * @desc 校验日期的格式,yyyy-MM-dd,无法校验dd的完整性,
         * 就是可能出现 2020-2-32,2020-1-33这样的天数,可以通过设置日期的严禁性来转成日期,若报错则日期不正确
         * @author fanzhen
         * @date 2020-05-28 18:50
         * @param 
         * @param datestr:日期,格式:yyyy-MM-dd
         * @return boolean
         */
        public static boolean validDateEffecitive(String datestr) throws Exception{
            boolean matches =  Pattern.matches(DATE_REGEX, datestr);
            if(!matches){
                return matches;
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //设置日期格式转的严谨性
            sdf.setLenient(false);
            try {
                sdf.parse(datestr);
            } catch (ParseException e) {
                e.printStackTrace();
                return false;
            }
            return matches;
        }
    
    展开全文
  • 日期格式如下:2020-09-25 00:00:00,并且中间-是可以省略的,那么我们到了后台就需要将时间给转换回来 ^((\d{2}(([02468][048])|([13579][26]))[\-]?((((0[13578])|(1[02]))[\-]?((0[1-9])|([1-2][0-9])|(3[01])))|...

    日期格式如下:2020-09-25 00:00:00,并且中间-是可以省略的,那么我们到了后台就需要将时间给转换回来

    ^((\d{2}(([02468][048])|([13579][26]))[\-]?((((0[13578])|(1[02]))[\-]?((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))[\-]?((0[1-9])|([1-2][0-9])|(30)))|(02[\-]?((0[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-]?((((0[13578])|(1[02]))[\-]?((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))[\-]?((0[1-9])|([1-2][0-9])|(30)))|(02[\-]?((0[1-9])|(1[0-9])|(2[0-8])))))) (((([0-1][0-9])|(2[0-3]))[\:]?([0-5][0-9])[\:]?((([0-5][0-9])))))$
    
    	public static String standardDatetime(String datetime) {
    		if (datetime.charAt(4) != '-') {
    			datetime = datetime.substring(0, 4) + "-" + datetime.substring(4, datetime.length());
    		}
    		if (datetime.charAt(7) != '-') {
    			datetime = datetime.substring(0, 7) + "-" + datetime.substring(7, datetime.length());
    		}
    		if (datetime.charAt(13) != ':') {
    			datetime = datetime.substring(0, 13) + ":" + datetime.substring(13, datetime.length());
    		}
    		if (datetime.charAt(16) != ':') {
    			datetime = datetime.substring(0, 16) + ":" + datetime.substring(16, datetime.length());
    		}
    		return datetime;
    	}
    
    展开全文
  • 正则表达式校验日期格式

    千次阅读 2019-04-02 09:34:23
    如下正则可以满足校验: public static boolean isDate(String date){ /** * 判断日期格式和范围 */ String rexp = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))...

     如下正则可以满足校验:

    public static 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;
        }

    最近导入excel日期数据时候,获取日期格式的值,需要判断日期格式,只要调用getDateVal(row,number),不符合格式的数据统统返回null,然后返回提示即可:

    Date planStartTime = getDateVal(row, 1);
    public Date getDateVal(Row row, int number) {
            //判断是否是数值格式
            Date date = null;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            if (row.getCell(number).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
                short format = row.getCell(number).getCellStyle().getDataFormat();
                //判断日期格式是否是 2017/01/01
                /*
                 * 14 yyyy-MM-dd / 2017/01/01
                 * 31 yyyy年m月d日
                 * */
                if (format == 14 || format == 31) {
                    date = DateUtil.getJavaDate(row.getCell(number).getNumericCellValue());
    
                    try {
                        date = sdf.parse(sdf.format(date));
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                }
    
            }
            return date;
        }

     

    展开全文
  • 正则表达式日期校验 正则表达式日期校验 正则表达式日期校验
  • 最近做的事情,日期时间用的是字符串在传,需要对之进行校验。?网上看了看,没找到非常满意的,于是自己动手,写了一个。?其中不完美的是:没有根据闰年判断2月分有没有29这一天。?其中要说明的:?1、年份限制在2000...
  • 输入字符串不需要转成Date,但又需要校验,可通过正则校验,也可根据需要灵活结合String的split方法等 import java.util.regex.Pattern; 一、 yyyy-MM-dd public static void main(String[] args) { String ...
  • 主要介绍了Java正则判断日期格式是否正确的方法,结合实例形式分析了Java针对日期字符串正则判断的相关操作技巧,需要的朋友可以参考下
  • Java正则表达式校验日期格式

    千次阅读 2020-12-17 13:47:02
    public static void main(String[] args) { //MM/dd/... } 参考文章: 正则表达式和日期操作:https://www.cnblogs.com/yangliguo/p/7498062.html 正则表达式校验时间:https://www.cnblogs.com/yyy-blog/p/10593983.html
  • 正则表达式校验YYYYMMDD日期格式

    千次阅读 2021-03-11 17:16:40
    首先,我们先了解2个概念:1、合法的日期范围:DateTime值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间。2、平年和闰年地球绕...
  • java 正则表达式--检验日期格式

    千次阅读 2019-07-18 22:58:31
    使用Pattern类和Matcher类完成一个日期格式是否符合要求的验证过程。 例如:日期格式要求为:yyyy-mm-dd 正则表达式验证规则过程: 日期: 2015 - 12 - 08 格式: 四位数字 两位数字 两位数字 正则: \\d{4} - \\d{2}...
  • 日期正则校验:前后端都适用,有平年、闰年校验之分,也兼顾yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd 格式 String DATAREG = "^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])([-/.]?)(?:0?[1-9]|1[0-9]|2[0-8])|(?:...
  • 1.对URL地址值的格式校验 2.对纯数字做校验 3.使用方式 比如校验http: .$error.http"> *数据格式不合法(如:http://xxx) 比如校验数字: .$error.number"> *数据必须为纯数字 (注:...
  • 正则表达式校验日期、时间

    千次阅读 2020-08-18 11:25:03
    校验yyyyMMddHHmmss ^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-...
  • js+正则校验身份证号

    2017-03-02 15:36:18
    js+正则校验身份证号,包括地区、年份、月份、日期、及最主要的--末尾算法--校验
  • privatevoidcheckDate()throwsIOException {// 4种分隔符String sep ="[-\\./_]";// 年份String strPattern ="^(19[4-9]\\d|20\\d{2})"+ sep;strPattern +="(";// 月(1,3,5,7,8,10,12)strPattern +="((0?...
  • 一,前端jsp页面有一文本框输入时间 HH:mm:ss格式的 另一个文本框要求输入yyyymmdd格式日期  时间:  由于未用到任何时间插件,只能通过js校验输入的时间是否正确,最简单的莫过于使用正则校验了,  ...
  • java后台对日期正则校验

    千次阅读 2017-09-01 18:42:32
    package com.winner.model; import java.util.regex.Pattern; /** * java中的日期验证正则表达式 * * @author wangxl * @date 2017-08-28 */ public class WWWW { public static void main(String[] args) {
  • } /** * 正则校验时间格式尽量完善版 ,适用格式(yyyyMMdd),二月只能控制到29号,无法区分平年、闰年。 * @param dateStr * @return */ private Boolean checkDates(String dateStr){ String datePattern = "^(19[4-...
  • 测试八位数字是否为有效日期
  • 常用的日期时间正则表达式下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。正则表达式 (?n:^(?=d)((?31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]d)(0[48]|[2468][048]|...
  • 今天头让我修改个javascript方法,验证输入的日期是否符合要求。恩。我们的要求是yyyy-mm-dd这样的格式,其他的统统不符合要求。原来的方法没用正则表达式,用了一堆判断。
  • 1、概述首先需要说明的一点,无论是 Winform ,还是 Webform ,都有很成熟的日历控件,无论从易用性还是可...日期正则一般是对格式有要求,且数据不是直接由用户输入时使用。因应用场景的不同,写出的正则也不同,复...
  • 原理:先用正则匹配,再提取时分秒,看其是否在正常的范围内。 代码如下:/** * 检测时间是否符合格式 * @param {Object} timeTextBox */function checkTime(timeTextBox){ var time = timeTextBox.val(); var ...
  • import java.util.regex.Matcher;...public class DateCheck{/*** 正则表达式验证日期格式* @param args*/public static void main(String[] args){String checkValue = "2007-02-29";//String eL ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,810
精华内容 10,724
关键字:

日期格式正则校验