RegEx - проверка времени ((ч) ч: мм) - PullRequest
10 голосов
/ 29 апреля 2010
/^\d{1,2}[:][0-5][0-9]$/

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

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

Ответы [ 6 ]

17 голосов
/ 29 апреля 2010

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

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

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

/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/
12 голосов
/ 29 апреля 2010

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

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

Здесь

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

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

1 голос
/ 25 июня 2015

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

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

0 голосов
/ 26 мая 2019

Для тех, кто ищет 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. Примечание: не допускается использование одной цифры в мм.
0 голосов
/ 12 декабря 2016

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

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

Для таких времен, как: 0: 01-12: 59

или

00: 01 - 12: 59

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...