【问题标题】:Regular Expression For Time Format Like DD:HH:MM:SS时间格式的正则表达式,如 DD:HH:MM:SS
【发布时间】:2026-01-08 08:20:03
【问题描述】:

我正在尝试对基于时间的文本框进行验证。因为我需要这样的格式。 00:00:00:00 (Days:Hours:Minutes:Seconds)。 有效时间为99:23:59:59, 01:01:01:01, 25:00:20:55

无效时间为99:24:60:60, 99:2:1:1

我对正则表达式了解不多。那么任何人都可以帮助我构建一个与我的场景匹配的正则表达式吗?

【问题讨论】:

    标签: javascript regex time


    【解决方案1】:

    试试这个模式,

    ^\d{2}:([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)$
    

    简要说明:

    • 在行首(字符串开头或换行符后)断言位置^
    • 匹配单个数字 0..9 \d{2}
      • 正好2次{2}
    • 匹配字符“:”字面意思:
    • 匹配下面的正则表达式并将其匹配捕获到反向引用号 1 ([0-1]\d|2[0-3])
      • 匹配下面的正则表达式(仅当这个表达式失败时才尝试下一个选项)[0-1]\d
        • 匹配“0”到“1”范围内的单个字符[0-1]
        • 匹配单个数字 0..9 \d
      • 或者匹配下面第2个正则表达式(如果这个匹配失败,整个组都失败)2[0-3]
        • 匹配字符“2”字面意思2
        • 匹配“0”到“3”范围内的单个字符[0-3]
    • 匹配字符“:”字面意思:
    • 匹配下面的正则表达式并将其匹配捕获到反向引用号 2 ([0-5]\d)
      • 匹配“0”到“5”«[0-5]»范围内的单个字符
      • 匹配单个数字 0..9 \d
    • 匹配字符“:”字面意思为:
    • 匹配下面的正则表达式并将其匹配捕获到反向引用编号 3 «([0-5]\d)»
      • 匹配“0”到“5”范围内的单个字符[0-5]
      • 匹配单个数字 0..9 \d
    • 在行尾断言位置(在字符串末尾或换行符之前)$

    【讨论】:

    • 输入其他字符时可以用''(null)替换吗?我可以通过哪种方式做到这一点?或者我必须检查模式是否匹配?我只需要在按键时限制用户。