Как проверить строку типа '$ Now + 2h', используя регулярное выражение, для JS? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть пользовательский ввод для проверки:

Строка состоит из части 1 + часть 2. часть 1 может иметь значение «$ Now» или «$ Today» или «$ Текущий месяц'. Часть 1 обязательна.

Часть 2 может быть '+' или '-', за которой следует число и единица . Число может быть любым числом, и Единица должна быть одной из 'm', 'h', 'd'. Часть 2 является необязательной.

Некоторые допустимые примеры:

'$Now', 
'$Today',
'$CurrentMonth',
'$Now + 2h',
'$Now - 4m',
'$Now + 6d',
'$Today - 7d'

Пробовал несколько шаблонов, но не смог пройти, так как у меня очень мало знаний о регулярных выражениях.

1 Ответ

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

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

^\$(Now|Today|CurrentMonth)\s*(?:([+-])\s*(\d+)([dhm]))?\s*$

Он ищет один из $Now, $Today или $CurrentMonth, за которым следует необязательный +/-, цифры и единицы измерения (d, m или h). Он фиксирует Part 1 в группе 1, затем +/- в группе 2, цифры в группе 3 и единицы в группе 4 для упрощения постобработки.

Демонстрация по регулярному выражению regex101

...