/^\d{1,2}[:][0-5][0-9]$/
是我的。这将分钟限制在00-59。但是,它不会将小时数限制在0到12之间。对于相似性和一致性,如果可能,我希望单独使用RegEx。
此外,我希望第一个数字是可选的。即09:30接受以及9:30。我玩了范围,但超出范围的东西总是可以接受的。
答案 0 :(得分:17)
假设您在12小时内工作,0不是有效小时,也应排除(如Jon指出)。这是一个基本的解决方案:
/^(0?[1-9]|1[012]):[0-5][0-9]$/
24小时时间正则表达式匹配器的工作方式类似:
/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/
答案 1 :(得分:12)
0 - 9和10 - 12例需要分开处理。 (这两个规则可以与|
结合使用。)
/^(?:0?\d|1[012]):[0-5]\d$/
下面
(?:…)
是一个非捕获组x|y
表示匹配任一模式0?\d
匹配0 - 9或00 - 09 1[012]
匹配10 - 12. 答案 2 :(得分:5)
/^(10|11|12|[1-9]):[0-5][0-9]$/
我认为您不希望0:50作为有效时间。
答案 3 :(得分:1)
答案 4 :(得分:0)
这是完美的:^ 0?([0-9] [0-2]?):[0-5] [0-9] $
注意:仅12小时时钟
对于像时代这样: 0:01- 12:59
或
00:01 - 12:59
答案 5 :(得分:0)
对于寻求24小时格式匹配的人们,
hh:mm:ss或h:mm:ss:
status = /^(2[0-3]|[0-1]?[\d]):[0-5][\d]:[0-5][\d]$/.test(timestr)
hh:mm或h:mm:
status = /^(2[0-3]|[0-1]?[\d]):[0-5][\d]$/.test(timestr)
此网站非常适合测试:https://www.regexpal.com/
附录:完整性说明:
^
:字符串的开始,$
:字符串的结束。因此,我们将表达式放在^..$
块中,以确保模式之外没有其他内容。(2[0-3]|[0-1]?[\d])
:翻译为2[0-3]
或[0-1]?[\d]
2[0-3]
:20、21、22、23 [0-1]?[\d]
:0或1或什么都不算(?
),后跟任意一位数字(\d
)。因此,这适用于0到19之间的数字。:
只是那个字符[0-5][\d]
:从00到59之间的数字。注意:mm处不能容忍一位数字。