regex - 正则表达式只允许有效的时间偏移值
问题描述
我正在寻找一个只允许时间偏移值的正则表达式。
我用过:
^(?:[+-](?: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
不应该允许的值。
我希望它只允许我在上述链接中提到的那些值。
解决方案
通过稍微调整您的正则表达式,我能够达到您想要的结果。这也很简短。
^(?:(?:[+-](?:1[0-4]|0[1-9]):[0-5][0-9])|00:00)$
您可以在此处检查结果并进一步测试
-12:00
这里应该注意的一点是,您可以在 timezone(到+14:00
)的当前有效值之间传递其他值。通过阅读问题中的评论,我觉得最好以这种方式进行,以防万一它们发生变化。(您需要调整正则表达式以允许大于 的值14:00
)
如果您严格希望将其限制为您列出的值,那么枚举将是一种更好的方法。
推荐阅读
- raspberry-pi3 - 使用 iw 创建虚拟接口失败
- javascript - 如何在不使用内联 css 的情况下使用彩色文本框(红色/绿色)进行 Javascript 表单验证?
- webpack - 不允许加载本地资源 electron-webpack electron-builder
- python - 适用于 Python 的 Google Ads API:“_Rendezvous”对象没有属性“request_id”
- tags - 当我从应用程序登录然后从应用程序移动到网络时,访问者 ID 中间值在各个域之间不一致
- intellij-idea - Intellij codeStyleSettings.xml vs codeStyleConfig.xml vs codeStyle.xml
- jestjs - 为什么装饰器不能在 Jest with Babel 中工作?
- php - 在子字符串之前匹配数字,但如果它在字母之前则不匹配
- asp.net-core - 为什么我需要设置 DefaultForbidScheme
- elasticsearch - Elasticsearch 重新索引后更大的索引大小