1. 程式人生 > >正則表達式匹配12小時24小時制時間

正則表達式匹配12小時24小時制時間

存在 有意 實現 正則表達 相同 ... 方式 時間 如果

1、正則表達式匹配時刻

(1)12小時制-匹配8:10 am或者10:30 pm ...

  • 最簡單也是我們最先想到到的應該就是這種正則:[0-9]?[0-9]:[0-9]{2} (am|pm);

  這的確可以滿足需求,但是上述正則呢可以匹配99:99 am這種沒有意義的數據,如果只是要表示有意義的數據呢??

  • 可以采用這種方式:(1?[0-2]|[1-9]):[0-5][0-9] (am|pm);

(2)24小時制匹配時間

  24小時制我們就需要考慮0這個問題,如03:30;

  我們細細想一下這個問題,24個小時可以分為這三種情況,00-09,10-19,20-23;

  • 按照這個思路我們可以這樣寫:(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9],如果要是存在3:30這種情況,可以這樣寫(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]

  上邊這個正則確實滿足了需求,但是能否讓表達式更加完美一下呢?

  • 正則表達式合並:([01]?[0-9]|2[0-3]):[0-5][0-9]

  除了上面所說的方法,還有另外一種思路也可以實現相同的效果,只是這種方法不大容易想到;

  思路二:將時間分為五種情況,04-09,14-19,00-03,10-13,20-23;

  • ([0-1]?[4-9]|[0-2]?[0-3])

正則表達式匹配12小時24小時制時間