2013-03-29 66 views
0

我正在試圖找到正確的正則表達式(用於Java和JavaScript)來驗證一個星期幾和24小時時間格式的數組。我想出了時間格式,但我正在努力想出完整的解決方案。重複值的正則表達式

正則表達式需要驗證包含以逗號分隔的以下一項或多項的模式。

{兩個字符的天} HH:MM-HH:MM

有效字符串的三個例子是:

M 5:30-7:00 
M 5:30-7:00, T 5:30-7:00, W 18:00-19:30 
F 12:00-14:30, Sa 6:45-8:15, Su 6:45-8:15 
+0

顯示你試過的東西 –

+1

你說HH:MM,但你會允許一個數字小時嗎?例如06或6 – methai

+0

所以你說你不知道如何確保字符串中除了一個或多個以逗號分隔的格式外沒有任何內容? –

回答

0

你可以試試這個

[A-Za-z]{1,2}[ ]\d+:\d+-\d+:\d+ 
+0

您需要匹配小時的一位或兩位數字和分鐘的兩位數字。 – Jerry

+0

'{1,2}'我會想象,而不是'{1:2}'。 –

+0

謝謝 我改變了它 – MIE

0

這應該做技巧:

^(M|Tu|W|Th|F|Sa|Su) \d{1,2}:\d{2}-\d{1,2}:\d{2}(, (M|Tu|W|Th|F|Sa|Su) \d{1,2}:\d{2}-\d{1,2}:\d{2})*$ 

請注意,您在上面的示例中顯示T,這是不明確的。您可能需要強制執行TuTh,如我的正則表達式所示。

+0

你缺少'^','$'..還有'\ d {1,2}','\ d {2}'應該是'\ d +'.. – Anirudha

+0

@The_Land_Of_Devils_SriLanka你是正確的關於'^ $',但是'\ d +'將會允許一個或多個數字,我認爲這不會令人滿意 –

0

這將捕獲數組中的所有集合。 T在星期幾的短日期中是有爭議的(星期二或星期四?)。 ?

^((?:[MTWFS]|Tu|Th|Sa|Su)\s(?:[0-9]{1,2}:[0-9]{2})-(?:[0-9]{1,2}:[0-9]{2})(?:,\s)?)+$ 

的(:)是非捕獲組,因此實際的比賽將是(例如):

  • 米5:30-7:00
  • 牛逼5:30 -7:00
  • W 18:00-19:30

但整個線將驗證。

爲行邊界和明確的時間 - 時間匹配添加了^和$,因爲一些正則表達式解析器可能無法使用我以前的方式工作。

+0

'用逗號隔開? – Anirudha

+0

我覺得分隔符可以是任何東西,如果你只是找到一組比賽 - 但好點!已添加,但在捕獲的組之外。 – methai

0

你可以試試這個:([MTWFS][ouehra]?) ([0-9]|[1-2][0-9]):([0-6][0-9])-([0-9]|[1-2][0-9]):([0-6][0-9])

0

我會去與此:

(((M|T(u|h)|W|F|S(a|u)) ((1*\d)|(2[0-3])):[1-5]\d-((1*\d)|(2[0-3])):[1-5]\d(,)?)+