You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需求:编写可匹配全部指定时段格式的正则表达式(RegExp)

精准匹配指定时段格式的正则表达式

需要精准匹配以下所有时段格式,且仅匹配这些格式:

07:00 - 15:30
16:00 bis 20:30
7:00-15:00
7.00 Uhr 16.30 Uhr
7 - 16.30 Uhr
7 - 16 Uhr
7:30 - 16 Uhr
7:15 Uhr bis 16:30 Uhr
7-16.15 Uhr

你当前使用的正则表达式存在问题:

([0-9] | [01]? [0-9] | 2 [0-3]) ((: |. |.) ([0-5] [0-9])?) ( . *?) ([0-9] | [01]? [0-9] | 2 [0-3]) ((: |. |.) ([0-5] [0-9])?)

它会错误匹配7:00-15、7.00 Uhr 16这类不完整格式,达不到精准匹配的需求。

修正后的正则表达式

^(?:(?:[01]?\d|2[0-3])(?:[:.]\d{2})?)(?:\s*(?:-|bis)\s*|\s+Uhr\s+(?:bis\s+)?)((?:[01]?\d|2[0-3])(?:[:.]\d{2})?)\s*Uhr?$

正则逻辑说明

  • ^ 和 $:锁定整个字符串,避免仅匹配部分内容
  • (?:[01]?\d|2[0-3]):匹配0-23范围内的小时数,支持1位或2位数字格式
  • (?:[:.]\d{2})?:可选的分钟部分,必须是:或.后跟两位数字(00-59),要么完整出现,要么完全省略,杜绝半完整格式
  • (?:\s*(?:-|bis)\s*|\s+Uhr\s+(?:bis\s+)?):处理时间间隔的分隔符,覆盖三种场景:
    • 带或不带空格的-
    • 前后可带空格的bis
    • 前时间后接 Uhr,再可选bis 连接后时间
  • \s*Uhr?$:允许后时间末尾带 Uhr,确保格式收尾正确

这个正则能精准匹配所有你列出的合法格式,同时拒绝分钟不完整的错误格式,完全满足需求。

内容的提问来源于stack exchange,提问作者Mtszbrtw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:10:38