Я ищу регулярное выражение, которое допускает только значения смещения времени.

Я использовал:

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

ЕДИНСТВЕННЫЕ строки, которые мне нужно сопоставить:

-12:00
+14:00
-11:00
-10:00
-09:30
-09:00
-08:00
-07:00
-06:00
-05:00
-04:00
-03:30
-03:00
-02:00
-01:00
00:00
+01:00
+04:00
+03:30
+03:00
+02:00
+04:30
+05:00
+05:30
+05:45
+06:00
+06:30
+07:00
+08:00
+08:45
+09:00
+09:30
+10:00
+10:30
+11:00
+12:00
+12:45
+13:00
+14:00

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

Он отлично работает для всех значений, кроме 00:00. Кроме того, он допускает некоторые дополнительные значения, такие как -19:30 +23:00 22:30 21:00, которые не должны быть разрешены.

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

0
derek 2 Сен 2020 в 10:17

2 ответа

Лучший ответ

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

^(?:(?:[+-](?:1[0-4]|0[1-9]):[0-5][0-9])|00:00)$

Вы можете проверить результаты и протестировать их здесь

Здесь следует отметить один момент: вы можете передавать другие значения между текущими действительными значениями часового пояса (от -12:00 до +14:00). Читая комментарии в вопросе, я считаю, что лучше сделать так, для будущей проверки на случай, если они изменятся. (Вам нужно будет настроить регулярное выражение, чтобы разрешить значения больше, чем 14:00)

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

0
Sudoss 2 Сен 2020 в 11:27

Чтобы сопоставить только эти ваши строки, вы можете использовать

^(?:\+(?:0(?:[12]:00|[34]:[03]0|5:(?:[03]0|45)|6:[03]0|7:00|8:(?:00|45)|9:[03]0)|1(?:0:[03]0|1:00|2:(?:00|45)|[34]:00))|-(?:0(?:[12]:00|3:[03]0|[4-8]:00|9:[03]0)|1[0-2]:00)|00:00)$

См. демонстрацию регулярного выражения

Используйте интерактивные / внешние инструменты для создания подобных регулярных выражений списка слов (например, My Regex Tester и т. Д.).

0
Wiktor Stribiżew 2 Сен 2020 в 09:49