RegEx - проверка времени ((h) ч: мм)

/^\d{1,2}[:][0-5][0-9]$/

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Здесь

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

Ответ 4

Спасибо!!! Я использую этот код 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; }

Рез = истинно | ложно

Ответ 5

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

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

Для Times: 0: 01- 12:59

или

00:01 - 12:59

Ответ 6

Для людей, которые ищут 24-часовой формат соответствия,

чч: мм: сс или ч: мм: сс:

status = /^(2[0-3]|[0-1]?[\d]):[0-5][\d]:[0-5][\d]$/.test(timestr)

чч: мм или ч: мм:

status = /^(2[0-3]|[0-1]?[\d]):[0-5][\d]$/.test(timestr)

Этот сайт отлично подходит для тестирования: https://www.regexpal.com/

Дополнительная информация: Объяснение полноты:

  • ^: начало строки, $: конец строки. Таким образом, мы помещаем выражение в блок ^..$ чтобы гарантировать, что нет ничего вне нашего шаблона.
  • (2[0-3]|[0-1]?[\d]): переводится в 2[0-3] ИЛИ [0-1]?[\d]
  • 2[0-3]: 20, 21, 22, 23
  • [0-1]?[\d]: 0 или 1 или ничего (?), За которым следует одна единственная цифра (\d). Итак, это работает для чисел от 0 до 19.
  • : только этот персонаж
  • [0-5][\d]: число от 00 до 59. Примечание: не допускается использование одной цифры в мм.