2013-08-26 3 views
1

Я пытаюсь выполнить проверку на временное текстовое поле. В этом мне нужен такой формат. 00:00:00:00 (Days:Hours:Minutes:Seconds). Правильные Времена 99:23:59:59, 01:01:01:01, 25:00:20:55,Регулярное выражение для формата времени Как DD: HH: MM: SS

Invalid времена 99:24:60:60, 99:2:1:1

У меня нет много знаний в Regex. Так может ли кто-нибудь помочь мне создать Regex, который соответствует моему сценарию?

ответ

1

Попробуйте эту модель,

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

Краткое описание:

  • положение Утверждай в начале строки (в начале строки или после того, line break character) ^
  • Совпадение одна цифра 0..9 \d{2}
    • Ровно в 2 раза {2}
  • Матч символ «:» буквально :
  • Match регулярное выражение ниже, и захватить его матч в обратной ссылки номер 1 ([0-1]\d|2[0-3])
    • Соответствует либо регулярному выражению ниже (попытка следующей альтернативы, только если этот сбой) [0-1]\d
      • Матч один символ в диапазоне между «0» и «1» [0-1]
      • Match одна цифра 0..9 \d
    • Или соответствует регулярное выражение номер 2 ниже (вся группа терпит неудачу, если это одно не совпадает) 2[0-3]
      • Совпадение символ «2» буквально 2
      • Match одного символа в диапазоне между «0» и «3» [0-3]
  • Матч символ «:» буквально :
  • Match регулярное выражение ниже, и захватить его матч в обратной ссылки номером 2 ([0-5]\d)
    • Матч один символ в диапазоне между «0» и «5» «[0-5]»
    • Сопоставьте одну цифру 0 ..9 \d
  • Матч символ «:» буквально :
  • Match регулярное выражение ниже, и захватить его спичку в номер 3 обратная ссылка «([0-5] \ d)»
    • Матч один характер в диапазоне между «0» и «5» [0-5]
    • Match одна цифра 0..9 \d
  • положение Утверждай в конце O f строка (в конце строки или до символа прерывания строки) $
+0

Можно ли заменить символ '' (null), когда введены другие символы? Каким образом я могу это сделать? или я должен проверить, соответствует ли шаблон или нет? все, что мне нужно, это ключевое нажатие, только я должен ограничить пользователя. – naren666

+0

'60' действителен для второго прыжка http://en.wikipedia.org/wiki/Leap_second – Toto

Смежные вопросы