2017-04-09 54 views
0

我試圖使正則表達式滿足上午或下午時間的標準。12小時時間驗證涉及分號的Java正則表達式

我試過time.matches("[0-9]{2}:[0-9]{2}")但無論我輸入什麼時候都找不到它,例如20:00不匹配。 另外,如何在最後添加匹配的AM或PM(接受大寫或小寫)。

難道是這樣的time.matches("[0-9]{2}:[0-9]{2}[am|pm]")

+1

'[am | pm]'應該是'(?:am | pm)'。此外,請張貼可複製的代碼。 – Maroun

+0

@Henry oh woops mb,累了:D – user7404408

回答

3

爲了驗證一個12小時時間格式的正則表達式應該是

(1[012]|[1-9]):[0-5][0-9](\\s)?(?i)(am|pm)

1[012] - > 1後跟0 1或2,因爲只有10個, 11,12允許次

[1-9] - 1>任何一個數字時至9

隨後分號

[0-5][0-9] - >用於驗證分鐘。從00到59的任何內容都被接受。

(\\s)?忽略了時間和AM或PM

(?i)(am|pm)不區分大小寫點之間的任何空白,下午驗證

+0

'\\ s'周圍的括號是不必要的,但+1 – Bohemian

+0

感謝您的解釋! – user7404408

0
Pattern p = Pattern.compile("^[0-9]{2}:[0-9]{2}([a|p]m)?",Pattern.CASE_INSENSITIVE); 
    Matcher match = p.matcher("20:00PM"); 
    if (match.find()) 
     System.out.println(true); 
    else 
     System.out.println(false); 

您可以使用如下其它圖案: 「^ \ d \ d: \ d \ d([A | p] M)「?