首页 > 解决方案 > 正则表达式只允许有效的时间偏移值

问题描述

我正在寻找一个只允许时间偏移值的正则表达式。

我用过:

^(?:[+-](?: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不应该允许的值。

我希望它只允许我在上述链接中提到的那些值。

标签: regextime

解决方案


通过稍微调整您的正则表达式,我能够达到您想要的结果。这也很简短。

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

您可以在此处检查结果并进一步测试

-12:00这里应该注意的一点是,您可以在 timezone(到+14:00)的当前有效值之间传递其他值。通过阅读问题中的评论,我觉得最好以这种方式进行,以防万一它们发生变化。(您需要调整正则表达式以允许大于 的值14:00

如果您严格希望将其限制为您列出的值,那么枚举将是一种更好的方法。


推荐阅读