2013-08-26 28 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