一文教會(huì)你用正則表達(dá)式校驗(yàn)日期時(shí)間格式
日期部分校驗(yàn)
概念
首先,我們先了解2個(gè)概念:
1、合法的日期范圍:
DateTime 值類型表示值范圍在公元(基督紀(jì)元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之間的日期和時(shí)間。
2、平年和閏年
地球繞太陽公轉(zhuǎn)一周叫做一回歸年,一回歸年長365日5時(shí)48分 46秒。因此,公歷規(guī)定有平年和閏年,平年一年有365日,比回歸年短0.2422日,四年共短0.9688日,故每四年增加一日,這一年有366日,就 是閏年。但四年增加一日比四個(gè)回歸年又多0.0312日,400年后將多3.12日,故在400年中少設(shè)3個(gè)閏年,也就是在400年中只設(shè)97個(gè)閏年,這樣公歷年的平均長度與回歸年就相近似了。由此規(guī)定:年份是整百數(shù)的必須是400的倍數(shù)才是閏年,例如1900年、2100年就不是閏年。
驗(yàn)證YYYY年份:
\d{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3}
驗(yàn)證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
校驗(yàn)yyyyMMdd
最終,驗(yàn)證YYYYMMDD的正則表達(dá)式為
((\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)
校驗(yàn)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))
時(shí)間部分校驗(yàn)
校驗(yàn)HHmmss
校驗(yàn)時(shí)分秒:格式:HHmmss
([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])
校驗(yàn)HH-mm-ss
校驗(yàn)時(shí)分秒:格式:HH-mm-ss
([0-1]?[0-9]|2[0-3])-([0-5][0-9])-([0-5][0-9])
校驗(yàn)日期+時(shí)間部分
校驗(yàn)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])
校驗(yàn) yyyy-MM-dd HH:mm:ss
校驗(yàn) yyyy-MM-dd HH:mm:ss(日期和時(shí)間之間有一個(gè)或多個(gè)空格)
((([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])
應(yīng)用舉例
衛(wèi)生數(shù)據(jù)元校驗(yàn)
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 = "不符合日期格式y(tǒng)yyyMMdd"; 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 = "不符合時(shí)間格式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 = "不符合日期時(shí)間格式y(tǒng)yyyMMddTHHmmss"; break; } break;
參考文章:
https://www.cnblogs.com/Alisa68/p/13208704.html
https://www.cnblogs.com/yyy-blog/p/10593983.html
總結(jié)
到此這篇關(guān)于正則表達(dá)式校驗(yàn)日期時(shí)間格式的文章就介紹到這了,更多相關(guān)正則表達(dá)式校驗(yàn)日期時(shí)間格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS正則表達(dá)式驗(yàn)證數(shù)字(非常全)
正則表達(dá)式,又稱規(guī)則表達(dá)式,在項(xiàng)目中經(jīng)常會(huì)用到正則表達(dá)式,今天小編抽空給大家分享js正則表達(dá)式驗(yàn)證數(shù)字的方法,感興趣的朋友參考下吧2016-12-12WEB開發(fā)時(shí)常用的正則表達(dá)式(PHP和Javascript)
這篇文章主要介紹了WEB開發(fā)中最常用最實(shí)用的正則表達(dá)式及其用法,需要的朋友可以參考下2015-10-10asp 正則表達(dá)式檢測(cè)http開頭的函數(shù)
asp 正則表達(dá)式檢測(cè)http開頭的函數(shù)...2007-08-08正則表達(dá)式(括號(hào))、[中括號(hào)]、{大括號(hào)}的區(qū)別小結(jié)
這篇文章主要介紹了正則表達(dá)式(括號(hào))、[中括號(hào)]、{大括號(hào)}的區(qū)別小結(jié),本文用(\s*)[\s*]{\s*}做例子,需要的朋友可以參考下2014-07-07asp.net中利用正則表達(dá)式判斷一個(gè)字符串是否為數(shù)字的代碼
asp.net中利用正則表達(dá)式判斷一個(gè)字符串是否為數(shù)字的代碼,需要的朋友可以參考下。2011-12-12詳解表單驗(yàn)證正則表達(dá)式實(shí)例(推薦)
這篇文章主要介紹了詳解表單驗(yàn)證正則表達(dá)式實(shí)例(推薦)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,特此分享到腳本之家平臺(tái)供大家參考2016-05-05