regex - Как создать регулярное выражение даты без повторения предыдущей группы - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу создать регулярное выражение для соответствующих форматов даты, введенных пользователем. Пользователь будет вводить форматы даты в виде строки (" дд / ммм / гггг "), а не фактических значений.

Например:

  • дд / ммм / гггг = ✅
  • ммм / дд / гггг = ✅
  • дд / дд / гггг = ❌ (ранее захваченные группы не могут повторяться)
  • ммм / ммм / гггг = Same (та же причина, что и выше)

У меня проблемы с работой с негативным прогнозом. Любая помощь очень ценится.

1 Ответ

0 голосов
/ 15 апреля 2020

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

\b(?:dd\/(?:mm|MMM)\/yyyy|(?:mm|MMM)\/dd\/yyyy|yyyy\/(?:mm|MMM)\/dd)\b

Демо

Механизм регулярных выражений выполняет следующие операции.

\b                      # match a word break
(?:                     # begin a non-capture group
  dd\/(?:mm|MMM)\/yyyy  # match 'dd/' followed by 'mm' or 'MMM'
                        # followed by '/yyyy'
  |                     # or
  (?:mm|MMM)\/dd\/yyyy  # match 'mm' or 'MMM' followed by '/dd'
                        # followed by '/yyyy'
  |                     # or
  yyyy\/(?:mm|MMM)\/dd  # match 'yyyy/' followed by 'mm' or 'MMM'
                        # followed by 'dd'
)
\b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...