Подтвердить что ты не робот

Регулярное выражение для соответствия формату времени HH: MM

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Ничто из этого не помогло мне. В конце я использовал:

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

Logic:

Первое число (часы):  число от 0 до 19 → [0-1]?[0-9] (разрешающее одноразрядное число)
 или
 число от 20 до 23 → 2[0-3]

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

Ответ 3

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

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

    /^(0?[1-9]|1[0-2]):[0-5][0-9]\d$/
    
  • ЧЧ: MM 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)/
    

Ссылка и Демо

Ответ 4

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

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

Ответ 5

Лучше всего было бы HH: MM без риска.

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

Ответ 6

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

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

Ответ 7

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

^(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

Ответ 8

Матчи:

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])$

Ответ 9

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

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

Ответ 10

Вышеуказанное регулярное выражение поможет проверить формат hh: mm

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

Ответ 11

Объявляет

private static final String TIME24HOURS_PATTERN = "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";

public boolean validate(final String time) {
    pattern = Pattern.compile(TIME24HOURS_PATTERN);
    matcher = pattern.matcher(time);
    return matcher.matches();
}

Этот метод возвращает "true", когда String соответствует регулярному выражению.

Ответ 12

Поскольку вы задавали левый бит, необязательно, я делал левый самый и самый правый бит, необязательно, проверьте его

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

Он соответствует

0:0 
00:00
00:0 
0:00
23:59
01:00
00:59

Прямая ссылка доступна здесь

Ответ 13

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

^(([0-1]{0,1}[0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[1-9]|1[0-2])(:|\.)[0-5][0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[0-9]|1[0-9]|2[0-3])(:|\.)[0-5][0-9]))$

ручки: 4:00 4:00 4:00 4:00 утра 4:00 вечера 4.30 утра и т.д.

Ответ 14

Моя:

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

Это намного короче

Попробовал протестировать несколько примеров

Match:

  • 00:00
  • 7:43
  • 7:43
  • 19:00
  • 18:23

И не соответствует ни одному недопустимому экземпляру, например 25:76 и т.д.

Ответ 15

проверьте это masterfull timestamp detector regex, которое я построил, чтобы найти пользовательскую метку времени, примеры того, что она будет включать, но, безусловно, НЕ ограничивается;

8:30-9:40
09:40-09 : 50
09 : 40-09 : 50
09:40 - 09 : 50
08:00to05:00
08 : 00to05 : 00
08:00 to 05:00
8am-09pm
08h00 till 17h00
8pm-5am
08h00,21h00
06pm untill 9am

Он также будет собирать еще много, если в них есть цифры

Ответ 16

Вы можете попробовать следующее

^\d{1,2}([:.]?\d{1,2})?([ ]?[a|p]m)?$

Он может обнаруживать следующие шаблоны:

2300 
23:00 
4 am 
4am 
4pm 
4 pm
04:30pm 
04:30 pm 
4:30pm 
4:30 pm
04.30pm
04.30 pm
4.30pm
4.30 pm
23:59 
0000 
00:00

Ответ 17

Попробуйте выполнить

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

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

Ответ 18

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

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

Только модификация, которую я сделал, является самой левой цифрой, является необязательной. Остальное регулярное выражение такое же.