2010-04-28 4 views
11
/^\d{1,2}[:][0-5][0-9]$/ 

- это то, что у меня есть. это ограничивает минуты до 00-59. Однако он не ограничивает часы между 0 и 12. Для сходства и единообразия я хотел бы сделать это только с помощью RegEx, если это возможно.RegEx - проверка времени ((h) h: mm)

Дальше-больше я хотел бы первую цифру быть необязательными. т.е. 09:30, а также 9:30. Я играл с диапазонами, но что-то вне диапазона всегда приемлемо.

ответ

5
/^(10|11|12|[1-9]):[0-5][0-9]$/ 

Я не думаю, что вы тоже хотите 0:50 как действительное время.

13

0 - 9 и 10 - 12 случаев нужно рассматривать отдельно. (. Эти два правила могут быть объединены с |)

/^(?:0?\d|1[012]):[0-5]\d$/ 

Здесь

  • (?:…) не-захвата группы
  • x|y означает соответствовать либо шаблонов
  • 0?\d матчи 0 - 9 или 00 - 09
  • 1[012] соответствует 10 - 12.
+0

Как насчет 24-часовых часов? –

17

Предполагая, что вы работаете в 12-часовом формате, 0 не является действительным час, а также должны быть исключены (как отметил Джон). Вот основное решение:

/^(0?[1-9]|1[012]):[0-5][0-9]$/ 

24-часовое время регулярное выражение согласовани, который работает аналогично:

/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/ 
+2

Спасибо за отличный regEx! –

1

Спасибо !!! Я использую этот код Javascript сейчас:

function Check_arrival(time) { //Assuming you are working in 12 hour time, 0 is not a valid var patt = new RegExp("^(0?[1-9]|1[012]):[0-5][0-9]$"); var res = patt.test(time); return res; }

Рез = True | ложные

+0

Хорошо, что вы даете javascript RegExp класс способ сделать это, поскольку OP помечен как javascript. все еще как ответ @Trey Hunner дал для своего 24-часового рассмотрения. –

0

Это идеальный вариант:^0 (? [0-9] [0-2]): [0- 5] [0-9] $

Примечание: 12 Hr Часы только

Для Таймс, как: 0: 01- 12:59

или

00:01 - 12:59

+0

Извините, это идеальный вариант :) (([0-9] [0-2]?) | ([0] [0-9])): [0-5] [0-9] $ – Byorn

+0

00: 00 - 12:59 или 0:00 - 12:59 – Byorn

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