2013-08-26 29 views
1

我正在嘗試基於時間的文本框進行驗證。在這我需要一個這樣的格式。 ()。 有效時間已99:23:59:59, 01:01:01:01, 25:00:20:55時間格式的正則表達式如DD:HH:MM:SS

無效的時間是99:24:60:60, 99:2:1:1

我沒有太多的知識正則表達式。那麼任何人都可以幫助我構建一個適合我的情景的正則表達式?

回答

1

嘗試這個圖案,

^\d{2}:([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)$ 

簡要說明:在一行的開頭

  • 斷言位置(在字符串或開始後一換行符)^
  • 匹配單個數字0..9 \d{2}
    • 究竟2倍{2}
  • 匹配的字符「:」字面上:
  • 符合以下正則表達式和捕獲其匹配到反向引用編號1 ([0-1]\d|2[0-3])
    • 匹配下面的正則表達式(只有當這一個失敗時才嘗試下一個替代方法)[0-1]\d
      • 匹配在「0」之間的範圍內的單個字符和「1」 [0-1]
      • 匹配單個數字0..9 \d
    • 或匹配正則表達式下面號2(整個組失敗如果這一個發生故障的字符匹配)2[0-3]
      • 匹配「2」的字面2
      • 匹配單個字符中的「0」之間的範圍內,「3」 [0-3]
  • 匹配的字符「:」字面上:
  • 匹配正則表達式的下方,捕獲其匹配到反向引用數字2 ([0-5]\d)
    • 匹配在「0」之間的範圍內的單個字符和「5」«[0-5]»
    • 匹配一個數字0 ..9 \d
  • 匹配的字符「:」字面上:
  • 匹配正則表達式的下方,捕獲其匹配到反向引用編號3«([0-5] \ d)»
    • 匹配單個在端Ó字符「0」之間的範圍內,「5」 [0-5]
    • 匹配單個數字0..9 \d
  • 斷言位置f行(在字符串末尾或換行符前)$
+0

當其他字符輸入時,我可以用''(空)替換嗎?我能以哪種方式做到這一點?或者我必須檢查模式是否匹配?所有我需要的是在關鍵時刻只有我必須限制用戶。 – naren666

+0

'60'對閏秒有效http://en.wikipedia.org/wiki/Leap_second – Toto