加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

校验 日期/时间 的正则表达式

发布时间:2020-12-14 00:53:06 所属栏目:百科 来源:网络整理
导读:其实日期/时间的校验比较通用的一个方法(在java中)是给定一个pattern,parse一下(jdk中的日期类或者jodaTime都可以),如果不抛出Exception就是正确的格式. 否则是错误格式. 正则校验的话,要想写出比较严格的正则校验日期是比较困难的,因为每个月不同的天数/闰

其实日期/时间的校验比较通用的一个方法(在java中)是给定一个pattern,parse一下(jdk中的日期类或者jodaTime都可以),如果不抛出Exception就是正确的格式. 否则是错误格式. 正则校验的话,要想写出比较严格的正则校验日期是比较困难的,因为每个月不同的天数/闰年这个事情就很麻烦. 以下是个示例:

日期时间格式,如2014-01-01 12:12:32的校验:

^((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]))))))(s(((0?[0-9])|([1-2][0-3])):([0-5]?[0-9])((s)|(:([0-5]?[0-9])))))?$

日期格式,如2014-01-01的校验:

^((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]))))))$

主要是日期部分比较复杂,其实也可以剥离出时间部分进行时间校验.这个正则考虑了闰年/月份不同的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读