日期的格式多种多样,有如:"yyyy-MM-dd HH:mm:ss"、"yyyy/MM/dd HH:mm:ss"、"yyyyMMdd HH:mm:ss"等,当然也有的只记录到天。有的时候需要判断日期格式是否满足特定的格式,正则匹配是比较好的方法。下面罗列了常见日期格式的正则表达式,当前还没有考虑闰年和非闰年的情况。

参考了博客https://blog.csdn.net/gengxiaoming7/article/details/77113636,非常感谢,经验证,博主的表达式都是正确的,并在此基础上增加了特定日期格式的匹配,当然一定意义上是对博主给出的表达式的拼凑,特在此记录一下,用得到的时候可以及时翻的到,再次感谢博主。

1.匹配日期格式:yyyy-MM-dd HH:mm:ss

String timeRegex = "^((([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])$";boolean flag = Pattern.matches(timeRegex, "2012-12-31 12:07:59");

2.匹配日期格式:yyyy-MM-dd

String timeRegex1 = "(([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)$";System.out.println(Pattern.matches(timeRegex1, "2018-11-30"));

3.匹配日期格式:yyyy/MM/dd

String timeRegex2 = "(([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)$";System.out.println(Pattern.matches(timeRegex2,"2018/12/31"));

4.匹配日期格式:yyyy/MM/dd HH:mm:ss

String timeRegex3 = "((([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])$";System.out.println(Pattern.matches(timeRegex3,"2018/12/30 12:29:59"));

5.匹配日期格式:yyyyMMdd

String timeRegex4 = "(([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)$";System.out.println(Pattern.matches(timeRegex4, "20181223"));

6.匹配日期格式:yyyyMMddHHmmss

String timeRegex5 = "((([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])$";System.out.println(Pattern.matches(timeRegex5, "20181228162437"));

7.匹配格式:yyyyMMddHHmmssSSS

String timeRegex6 = "((([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])([0-9]{3})$";System.out.println(Pattern.matches(timeRegex6,"20181227182439000"));

8.匹配格式:yyyyMMdd HH:mm:ss

String timeRegex7 = "((([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))\\s([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";System.out.println(Pattern.matches(timeRegex7, "20181227 07:20:36"));

以上是几种日期格式的正则匹配过程,在此基础上可以组合出更多的日期格式。当然,深入学习正则表达式才能够熟练的使用正则匹配,此处仅做笔记,后续使用可以找到,深入学习正则时也可以帮助理解。

日期格式的正则表达式相关推荐

  1. oracle 正则表达式匹配日期格式,利用正则表达式找出不合符的日期

    很多时候我们的日期可能存放的是字符串类型,在插入的时候也很有可能插入的日期格式不正确, 因此我们需要找出这些不合符的日期格式,来此来修正.当然可以使用TO_DATE函数一个一个的转换来找出不合法的日期 ...

  2. 记一种验证日期格式的正则表达式

    工作中经常需要对用户输入的日期进行验证,常用的方式是使用正则对格式进行验证.比如如下: 一.简单的日期判断(YYYY/MM/DD): ^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$ ...

  3. 验证英文日期格式的正则表达式

    matchDate(){ // let dateString = 'Jan 01, 2019' let dateString = 'January 01, 2019' var dateRegex =  ...

  4. @RequestBody接收Json参数 | 用自定义注解对Vo对象中Date类型日期格式校验

    标题太长有木有?主要是为了把问题描述清楚,免得进错文章. 问题描述 昨天测试的同事测试接口的时候,测试出来一个Date类型校验问题. 要求输入的日期格式是:yyyy-MM-dd HH:mm:ss,Vo ...

  5. Java:15位或18位居民身份证号码通用校验(正则表达式、日期格式、末尾校验码)

    身份证号码校验,正则表达式校验.日期格式校验.18位身份证末尾校验码校验 前六位省市县号码变更频繁,这里就不做校验 import java.text.ParseException; import ja ...

  6. java正则判断日期格式_Java中用正则表达式判断日期格式是否正确

    1.Java中用正则表达式判断日期格式是否正确 DateType.java: /** * @Title:DateType.java * @Package:com.you.dao * @Descript ...

  7. 【正则表达式 】java 正则表达式 校验日期格式

    [正则表达式 ]java 正则表达式 校验日期格式 版权声明:本文为CSDN博主「RanLZ」的原创文章,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/Ran ...

  8. 正则表达式:日期格式的校验(日期+时间)

    日期格式如下:2020-09-25 00:00:00,并且中间-是可以省略的,那么我们到了后台就需要将时间给转换回来 ^((\d{2}(([02468][048])|([13579][26]))[\- ...

  9. js 时间戳转为日期格式

    什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方 ...

最新文章

  1. wpa_supplicant 详解(9) - 4 way handshake
  2. 有一种灾难,叫数据中心被大火烧了
  3. BITPOS key bit [start] [end]
  4. oracle11 不更新记录,oracle11g 使用first_value获取表中不连接的ID号及掉失记录数量...
  5. 飞桨模型保存_史上最全解读|飞桨模型库重大升级,主流算法模型全覆盖
  6. win10下 Ubuntu 18.04 LTS 的安装及 rlt8821ce网卡驱动的安装
  7. OSChina 周日乱弹 —— 致 OSCer 的中秋祝福
  8. HALCON:lines_gauss用法解析
  9. 高薪诚聘游戏引擎研发,有意者请与我联系!
  10. 【Luogu】P1972HH的项链(链表+树状数组)
  11. [转] TextField的restrict属性妙用
  12. 软件评测师教程简介(第一篇-理论篇)
  13. 2020年西南交通大学数据仓库与数据挖掘期末考试题
  14. UE4读取scv文件 -- 数据驱动游戏性元素
  15. 数据文件offline online
  16. 未来20年内,无人驾驶将颠覆这33大行业
  17. 警告 C4819 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
  18. 关于计算机英语演讲ppt模板,英语演讲ppt模板(英语演讲8分钟ppt模板) 最新免费版...
  19. Android 控件右上角角标的实现方案
  20. 舵机速度控制原理细解

热门文章

  1. PID应用时要注意的一些点
  2. Python多线程结合队列下载百度音乐的方法
  3. e2ee连接mysql数据库_E2EE应用服务器套件 - 文档 - [高级功能] 使用数据库连接池 - E2EE易语言网站敏捷开发框架...
  4. 2.QT+Opencv读取图片
  5. 英语读书笔记-Book Lovers Day01
  6. Meta利用视觉信息来优化3D音频模型,未来将用于AR/VR
  7. 焦化厂有害气体检测传感器选型
  8. 【推荐】数字化转型和案例及IT规划资料整理合集
  9. 什么是OmniPeek|卓越的网络分析工具-OmniPeek
  10. 计算机激光鼠标,光电鼠标和激光鼠标的区别