Regex проверяет мин и макс час в формате (H) H: мм - PullRequest
1 голос
/ 26 января 2020

У меня есть приложение JavaScript, и я пытаюсь настроить следующее регулярное выражение для работы с форматом (H)H:mm для времени от 00:01 или (0:01) и до 22:00:

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

Проблема в том, что он также позволяет любые минуты после 22, например, 22:59 допустим, и я хочу ограничить его 22:00.

Уже искали другие сообщения , но не смог найти ничего по моим критериям. Любые предложения приветствуются, потому что на данный момент я не уверен, смогу ли я сделать это с чистым регулярным выражением, или я должен прибегнуть к JavaScript

1 Ответ

1 голос
/ 26 января 2020

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

/^(?:(?:2[01]|[01]?\d):[0-5]\d|22:00)$/

См. Демонстрационную версию regex .

Детали шаблона

  • ^ - начало строки
  • (?: - начало внешней группы без захвата, используемой для применения якорей, ко всем альтернативам в группе
    • (?:2[01]|[01]?\d):[0-5]\d:
      • (?:2[01]|[01]?\d) - 20, 21 или необязательный 0 или 1, за которым следует любой ди git, затем
      • : - двоеточие
      • [0-5]\d - ди git от 0 до 5, а затем любой ди git
    • | - или
    • 22:00 - 22:00 строка
  • ) - конец внешней группы
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...