Регулярное выражение для соответствия формату времени ЧЧ: ММ - PullRequest
137 голосов
/ 24 сентября 2011

Я хочу регулярное выражение для сопоставления времени в формате ЧЧ: ММ.Вот что у меня есть, и это работает:

^[0-2][0-3]:[0-5][0-9]$

Это соответствует всему с 00:00 до 23: 59.

Однако я хочу изменить это так, 0:00 и 1:00, и т. Д. Также совпадают, а также 00:00 и 01:30.То есть сделать крайнюю левую цифру необязательной, чтобы она соответствовала HH: MM и H: MM.

Есть идеи, как это изменить?Мне нужно, чтобы это работало в javascript и php.

Ответы [ 18 ]

309 голосов
/ 24 сентября 2011

У вашего исходного регулярного выражения есть недостатки: оно не будет соответствовать 04:00, например.

Это может работать лучше:

^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$
46 голосов
/ 21 ноября 2013

Ничто из вышеперечисленного не сработало для меня. В итоге я использовал:

^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (js engine)

Логика:

Первое число (часы): число от 0 до 19 -> [0-1]?[0-9] (допускается однозначное число)
или
число от 20 до 23 -> 2[0-3]

второе число (минуты) всегда является числом от 00 до 59 -> [0-5][0-9] (не допускается ни одна цифра)

24 голосов
/ 04 июля 2018

Регулярные выражения для времени

  • ЧЧ: ММ 12-часовой формат, необязательный ведущий 0

    /^(0?[1-9]|1[0-2]):[0-5][0-9]\d$/
    
  • ЧЧ: ММ 12-часовой формат, необязательный начальный 0, обязательные меридиемы (AM / PM)

    /((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))/
    
  • ЧЧ: ММ 24 часа с опережением 0

    /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
    
  • ЧЧ: ММ 24-часовой формат, необязательный ведущий 0

    /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
    
  • ЧЧ: ММ: СС 24-часовой формат с ведением 0

    /(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)/
    

Справка и демонстрация

7 голосов
/ 10 сентября 2014

Вы можете использовать это 24 часа, секунды не являются обязательными

^([0-1]?[0-9]|[2][0-3]):([0-5][0-9])(:[0-5][0-9])?$
4 голосов
/ 29 мая 2014

Лучше всего будет для ЧЧ: ММ без риска.

^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
2 голосов
/ 15 марта 2014

Удивительно, но я обнаружил, что на самом деле все это не совсем подходит, так как они не работают для более короткого формата полуночи 0: 0, а некоторые не работают и для 00:00, я использовал и протестировал следующее:

^([0-9]|0[0-9]|1?[0-9]|2[0-3]):[0-5]?[0-9]$
2 голосов
/ 15 сентября 2014

Вы можете использовать это регулярное выражение:

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

Если вы хотите исключить 00:00, вы можете использовать это выражение

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

Второе выражение является лучшим вариантом, поскольку допустимое времяот 00:01 до 00:59 или от 0:01 до 23:59.Вы можете использовать любой из них по вашему требованию. Regex101 ссылка

1 голос
/ 02 сентября 2017

Совпадений:

2:9
2:09
2:59
02:9
02:09
02:59
23:59

Используйте его:

^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9])$
0 голосов
/ 24 сентября 2011

Попробуйте следующее

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

Примечание. Я предполагал использование механизма регулярных выражений javascript.Если это не так, пожалуйста, дайте мне знать.

0 голосов
/ 02 мая 2018

Небольшое изменение в Вклад Маниша М. Демблани выше, обрабатывает 4 утра (я избавился от секции секунд, поскольку она мне не нужна в моем приложении)4:00 4:00 4:00 4:00 утра 4:00 вечера 4:30 утра и т. Д ..

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