我試圖使正則表達式滿足上午或下午時間的標準。12小時時間驗證涉及分號的Java正則表達式
我試過time.matches("[0-9]{2}:[0-9]{2}")
但無論我輸入什麼時候都找不到它,例如20:00不匹配。 另外,如何在最後添加匹配的AM或PM(接受大寫或小寫)。
難道是這樣的time.matches("[0-9]{2}:[0-9]{2}[am|pm]")
我試圖使正則表達式滿足上午或下午時間的標準。12小時時間驗證涉及分號的Java正則表達式
我試過time.matches("[0-9]{2}:[0-9]{2}")
但無論我輸入什麼時候都找不到它,例如20:00不匹配。 另外,如何在最後添加匹配的AM或PM(接受大寫或小寫)。
難道是這樣的time.matches("[0-9]{2}:[0-9]{2}[am|pm]")
爲了驗證一個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)
不區分大小寫點之間的任何空白,下午驗證
'\\ s'周圍的括號是不必要的,但+1 – Bohemian
感謝您的解釋! – user7404408
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)「?
'[am | pm]'應該是'(?:am | pm)'。此外,請張貼可複製的代碼。 – Maroun
@Henry oh woops mb,累了:D – user7404408