Regex 验证时间的正则表达式

Regex 验证时间的正则表达式,regex,Regex,我已经尝试了许多组合 \d{1,2}:\d{2} 验证一段时间(即:0:33或12:33) 因此,在大多数情况下,上述表达是有效的,但我也需要这样做 1) 验证“:33”和 2) 使“00:33a”无效 我在谷歌上搜索过并尝试组合\s*,但它仍然不能同时满足这两个条件 感谢您的帮助 我相信您只需要指定开始^和结束$字符串的符号 ^\d{1,2}:\d{2}$ 这样,00:33a将失效如果只想匹配有效时间(例如23:59,但不是25:03等),可以尝试以下正则表达式: ^([01]?[0-9]

我已经尝试了许多组合

\d{1,2}:\d{2}
验证一段时间(即:0:33或12:33)

因此,在大多数情况下,上述表达是有效的,但我也需要这样做 1) 验证“:33”和 2) 使“00:33a”无效

我在谷歌上搜索过并尝试组合\s*,但它仍然不能同时满足这两个条件


感谢您的帮助

我相信您只需要指定开始^和结束$字符串的符号

^\d{1,2}:\d{2}$

这样,00:33a将失效

如果只想匹配有效时间(例如23:59,但不是25:03等),可以尝试以下正则表达式:

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

更仔细地看你的问题并扩展Gijs的答案,这可能是你想要的

^(?:[0-9]?|(?:[0-1][0-9])?|(?:2[0-3])?):[0-5][0-9]$
允许“:mm”、“h:mm”或“hh:mm”


我不确定(?:非捕获组的通用性如何-我习惯于从.Net使用它。

您使用的是什么语言?@Vulcan,
99:99
将是有效的,不确定OP是否希望它是有效的。@zzzzBov要使99:99无效,以下操作应该有效:
^([0-2]?\d)?:[0-5]\d$
Oops,应该是
[01]
在第一个子句中。
^(?:1[0-2]|\d):[0-5]\d$
可能是OP想要的,但这假设语言类似于JavaScript。这很好,但假设小时为一位数(3:..,而不是03:..)。如果需要两位数的小时,我认为应该是
^([0-1][0-9]|…
MrBlue,这并不完全正确。[01]?部分允许既没有前零(3:…)也有前零(03:…)(还有前零(13:…)。