最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

常用日期格式正則表達式詳解(完善版)

 更新時間:2024年05月11日 11:38:33   作者:wangyanglongcc  
正則表達式是一種強大的字符串匹配工具,我們可以使用它來校驗日期格式是否合法,這篇文章主要給大家介紹了關于常用日期格式正則表達式詳解的相關資料,需要的朋友可以參考下

第一步,驗證年份

年份范圍為 0001 - 9999,匹配YYYY的正則表達式為:

[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}

第二步,驗證月份和日期

1. 月份為[1, 3, 5, 7, 8, 10, 12],天數范圍為01-31

匹配MM__sep__DD的正則表達式為:

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

2. 月份為[4, 6, 9, 11],天數范圍為01-30

匹配MM__sep__DD的正則表達式為:

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

3. 月份為2月

3.1 平年,2月為01-28

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

3.2 閏年,2月為01-29

由于上面已經把2月01-28都包含了,所以這里只需要把2月29號匹配出來即可

1. 能被4整除,但不能被100整除

前兩位不需要考慮,后兩位能被4整除只有以下3種情況:

  • ①十位為0,個位為[4,8]
  • ②十位為[2,4,6,8],個位為[0,4,8]
  • ③十位為[1,3,5,7,9],個位為[2,6]

則年份正則表達式為:

([0-9]{2})(0[48]|[2468][048]|[13579][26])

YYYY__sep__MM__sep__DD:

([0-9]{2})(0[48]|[2468][048]|[13579][26])__sep__02__sep__29

2. 能被400整除

首先,能被400整除,后兩位一定是00,則只需要保證前兩位能被4整除。

前兩位能被4整除只有以下3種情況:

  • ①千位為0,百位為[4,8]
  • ②千位為[2,4,6,8],百位為[0,4,8]
  • ③千位為[1,3,5,7,9],百位為[2,6]

則年份正則表達式為:

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

YYYY__sep__MM__sep__DD:

(0[48]|[2468][048]|[13579][26])00__sep__02__sep__29

結論:

  • 平年

增加縮進,方便理解

([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})
__sep__
(
  ((0[13578]|1[02])__sep__(0[1-9]|[12][0-9]|3[01]))
  |
  ((0[469]|11)__sep__(0[1-9]|[12][0-9]|30))
  |
  (02__sep__(0[1-9]|[1][0-9]|2[0-8]))
)

直接使用,方便復制替換

([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})__sep__(((0[13578]|1[02])__sep__(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)__sep__(0[1-9]|[12][0-9]|30))|(02__sep__(0[1-9]|[1][0-9]|2[0-8])))

  • 閏年

增加縮進,方便理解

(([0-9]{2})(0[48]|[2468][048]|[13579][26])__sep__02__sep__29)
|
((0[48]|[2468][048]|[13579][26])00__sep__02__sep__29)

直接使用,方便復制替換

(([0-9]{2})(0[48]|[2468][048]|[13579][26])__sep__02__sep__29)|((0[48]|[2468][048]|[13579][26])00__sep__02__sep__29)

  • 平年和閏年合并

根據上述1和2,可以得出一個匹配合法日期的正則表達式(不區(qū)分平年和閏年)
增加縮進,方便理解

(([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})
__sep__
(
  ((0[13578]|1[02])__sep__(0[1-9]|[12][0-9]|3[01]))
  |
  ((0[469]|11)__sep__(0[1-9]|[12][0-9]|30))
  |
  (02__sep__(0[1-9]|[1][0-9]|2[0-8]))
))
|
((([0-9]{2})(0[48]|[2468][048]|[13579][26])__sep__02__sep__29)
|
((0[48]|[2468][048]|[13579][26])00__sep__02__sep__29))

直接使用,方便復制替換

(([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})__sep__(((0[13578]|1[02])__sep__(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)__sep__(0[1-9]|[12][0-9]|30))|(02__sep__(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])__sep__02__sep__29)|((0[48]|[2468][048]|[13579][26])00__sep__02__sep__29))

附:日期計算

JS的正則表達式還可以用來進行日期計算。下面是一個計算兩個日期之間相差天數的例子:

function dateDiff(startDate, endDate){  let start = new Date(startDate);  let end = new Date(endDate);  let diff = end.getTime()- start.getTime();  return Math.floor(diff /(24 * 3600 * 1000));}console.log(dateDiff('2023-04-01','2023-05-01'));//輸出30

總結 

到此這篇關于常用日期格式正則表達式的文章就介紹到這了,更多相關日期格式正則表達式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python正則表達式之基礎篇

    Python正則表達式之基礎篇

    正則表達式是用于處理字符串的強大工具,它并不是Python的一部分。這篇文章主要介紹了Python正則表達式之基礎篇的相關資料,需要的朋友可以參考下
    2016-01-01
  • 如何實現正則表達式的JavaScript的代碼高亮

    如何實現正則表達式的JavaScript的代碼高亮

    這篇文章主要介紹了如何實現正則表達式的JavaScript的代碼高亮方法,需要的朋友可以參考下
    2014-05-05
  • JavaScript正則表達式驗證中文實例講解

    JavaScript正則表達式驗證中文實例講解

    JavaScript經常會驗證中文本文將提供使用正則表達式實現,接下來介紹兩個實例,感興趣的你可不要錯過了哈,希望本例知識點可以幫助到你
    2013-02-02
  • javascript 基于正則表達式的文本框驗證代碼

    javascript 基于正則表達式的文本框驗證代碼

    js驗證文本框內容,以前jb51.net提供過不少是基于js函數版本的,這里提供一些正則表達式版本,大家學習歸學習,最好是基于函數的綁定操作。代碼分離技術。
    2009-12-12
  • 正則表達式RegExp語法與用法詳解

    正則表達式RegExp語法與用法詳解

    正則表達式是一個描述字符模式的對象,當檢索某個文本時,可以使用一種模式來描述要檢索的內容,RegExp就是這種模式,下面這篇文章主要給大家介紹了關于正則表達式RegExp語法與用法的相關資料,需要的朋友可以參考下
    2022-10-10
  • 自動檢測數字替換非數字的正則表達式

    自動檢測數字替換非數字的正則表達式

    這篇文章主要介紹了自動檢測數字替換非數字的正則表達式 ,需要的朋友可以參考下
    2016-05-05
  • ip138中各種客戶端驗證js代碼

    ip138中各種客戶端驗證js代碼

    包括ip驗證,身份證驗證,手機號碼驗證,電話號碼,郵政編碼驗證,域名驗證等,其實好的代碼,都在應用中,大家多去扒代碼吧。
    2009-12-12
  • 揭開正則表達式的神秘面紗(regexlab出品)

    揭開正則表達式的神秘面紗(regexlab出品)

    正則表達式學習起來其實是很簡單的,不多的幾個較為抽象的概念也很容易理解,之所以很多人感覺正則表達式比較復雜,一方面是因為大多數的文檔沒有做到由淺入深地講解,概念上沒有注意先后順序,給讀者的理解帶來困難
    2020-02-02
  • javascript下一個還原h(huán)tml代碼的正則

    javascript下一個還原h(huán)tml代碼的正則

    javascript下一個還原h(huán)tml代碼的正則...
    2007-08-08
  • php與javascript正則匹配中文的方法分析

    php與javascript正則匹配中文的方法分析

    這篇文章主要介紹了php與javascript正則匹配中文的方法,結合實例形式分析了針對utf-8與GBK編碼情況下的php、javascript正則匹配中文操作技巧,需要的朋友可以參考下
    2017-03-03

最新評論

乌海市| 固镇县| 盐亭县| 龙州县| 县级市| 上林县| 罗源县| 遂川县| 施秉县| 大竹县| 龙海市| 阿克陶县| 洞口县| 芜湖市| 高邑县| 莱西市| 阳城县| 祁门县| 杭锦旗| 黑山县| 朔州市| 五家渠市| 名山县| 乡城县| 财经| 小金县| 宁乡县| 汾阳市| 织金县| 高密市| 庆元县| 遂昌县| 英吉沙县| 雅安市| 运城市| 若尔盖县| 广饶县| 台中县| 浦东新区| 盐源县| 库尔勒市|