Ответ 1
Ваше оригинальное регулярное выражение имеет недостатки: например, оно не будет соответствовать 04:00
.
Это может работать лучше:
^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$
Я хочу регулярное выражение для совпадения времени в формате 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.
Ваше оригинальное регулярное выражение имеет недостатки: например, оно не будет соответствовать 04:00
.
Это может работать лучше:
^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$
Ничто из этого не помогло мне. В конце я использовал:
^([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]
(не допуская ни одной цифры)
ЧЧ: ММ 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)/
Вы можете использовать этот 24H, секунды являются необязательными
^([0-1]?[0-9]|[2][0-3]):([0-5][0-9])(:[0-5][0-9])?$
Лучше всего было бы HH: MM без риска.
^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
Удивительно, но на самом деле все они не совсем покрывают его, поскольку они не работают для более короткого формата в полночь 0: 0, а некоторые не работают в 00:00, я использовал и протестировал следующие
^([0-9]|0[0-9]|1?[0-9]|2[0-3]):[0-5]?[0-9]$
Вы можете использовать это регулярное выражение:
^(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
Матчи:
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-1][0-9]:[0-5][0-9]$|^[2][0-3]:[0-5][0-9]$|^[2][3]:[0][0]$
Вышеуказанное регулярное выражение поможет проверить формат hh: mm
^([0-1][0-9]|2[0-3]):[0-5][0-9]$
Объявляет
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 соответствует регулярному выражению.
Поскольку вы задавали левый бит, необязательно, я делал левый самый и самый правый бит, необязательно, проверьте его
^([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
Прямая ссылка доступна здесь
Небольшая модификация вклада Маниша М Демблани выше ручек 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 утра и т.д.
Моя:
^(1?[0-9]|2[0-3]):[0-5][0-9]$
Это намного короче
Попробовал протестировать несколько примеров
Match:
И не соответствует ни одному недопустимому экземпляру, например 25:76 и т.д.
проверьте это 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
Он также будет собирать еще много, если в них есть цифры
Вы можете попробовать следующее
^\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
Попробуйте выполнить
^([0-2][0-3]:[0-5][0-9])|(0?[0-9]:[0-5][0-9])$
Примечание. Я принимал javascript regex engine. Если он отличается от этого, пожалуйста, дайте мне знать.
Вы можете использовать следующее регулярное выражение:
^[0-2]?[0-3]:[0-5][0-9]$
Только модификация, которую я сделал, является самой левой цифрой, является необязательной. Остальное регулярное выражение такое же.