解析 乙個用於匹配特定日期格式的正規表示式

2021-10-06 14:58:15 字數 729 閱讀 5527

目標:構造能夠被如下正規表示式匹配的字串

^(?:\d-\d-\dt\d:\d:\d(\.\d+)?(z|[\+\-]\d:\d))$
初步嘗試

第一眼看到這個正規表示式,發現可以試著輸入2020-10-10t12:12:12.123進行匹配,結果發現匹配錯誤,因為後面還有一部分規則未匹配上。但是當前對從「?(z|」開始的部分不知其意。

語法學習

序號符號意義1

^表示式匹配起始標識2&

表示式匹配結束標識3?:

匹配後續表示式,但不獲取匹配結果4\d

數字5需要提供4個字元6\.

標識字元"."

7\d+

匹配任意長度數字8?

匹配零次或一次9|

或操作,如a|b,表示從a或b中選擇乙個進行匹配

10[\+\-]

匹配符號"+「或」-"

生成正確字串

根據上述語法,構建如下字串都可以通過該表示式的匹配:

(1) 2020-05-05t10:20:30.123z

(2) 2020-05-05t10:20:30.123+10:10

(3) 2020-05-05t10:20:30.123-10:10

小結這個表示式最關鍵的就是「?(z|」開始的部分,從時間的表達格式上也可以進行理解:乙個時間如果沒有誤差,則在其後加入"z"進行標識;如果有誤差,則加入"+/-"符號連同誤差時間進行標識。

乙個簡易的日期格式資料的比較

zke 日期格式通常處理的時候,將其型別宣告為string,這樣的話比較大小會有錯誤。例如 2018 9 11 與 2018 11 12 比較,逐位按照字母表順序比較大小,那麼 2018 11 12 小於 2018 9 11 這顯然是乙個錯誤的結果。那麼為了正常比較,我們可以將 2018 9 11 ...

Js 乙個日期時間格式化的方法

我們把時間顯示出來的時候,最簡單粗暴的辦法就是 直接把年,月,日 單獨取出來,然後拼接起來。有咩有更靈活的做法呢?肯定有!於是我做了乙個方法,方法格式化時間日期。此處用到了正規表示式的處理,不得不說,正規表示式是個強大高效的工具,就是容易忘記 要多用用 formatdate t,fmt for le...

特定時間操作的乙個經歷 時間格式轉換

本以為sql語句可以用 date now 這個用法的 但是老是測試不出資料 後來用乙個查詢把查詢出來的時間跟c 獲取到時間放到txt裡面對比才發現 裡面的格式是不相符的 並且資料庫查詢出來的日期在後面會有三位毫秒數字,所以要經過轉換才能用 否則要用到between a and b sql conve...