/^\d{1,2}[:][0-5][0-9]$/
Run Code Online (Sandbox Code Playgroud)
就是我拥有的.这将分钟限制在00-59.但是,它不会将小时数限制在0到12之间.对于相似性和一致性,如果可能的话,我想单独使用RegEx.
此外,我希望第一个数字是可选的.即09:30接受以及9:30.我玩了范围,但超出范围的东西总是可以接受的.
Tre*_*ner 18
假设您在12小时内工作,0不是有效小时,也应该被排除(如Jon指出的那样).这是一个基本的解决方案:
/^(0?[1-9]|1[012]):[0-5][0-9]$/
Run Code Online (Sandbox Code Playgroud)
一个24小时的正则表达式匹配器,其工作方式类似:
/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/
Run Code Online (Sandbox Code Playgroud)
ken*_*ytm 12
0 - 9和10 - 12例需要分开处理.(这两个规则可以结合使用|
.)
/^(?:0?\d|1[012]):[0-5]\d$/
Run Code Online (Sandbox Code Playgroud)
这里
(?:…)
是一个非捕获组x|y
意味着匹配任一模式0?\d
匹配0 - 9或00 - 091[012]
比赛10 - 12.对于寻找 24 小时格式匹配的人们,
hh:mm:ss 或 h:mm:ss :
status = /^(2[0-3]|[0-1]?[\d]):[0-5][\d]:[0-5][\d]$/.test(timestr)
Run Code Online (Sandbox Code Playgroud)
hh:mm 或 h:mm :
status = /^(2[0-3]|[0-1]?[\d]):[0-5][\d]$/.test(timestr)
Run Code Online (Sandbox Code Playgroud)
该站点非常适合进行测试:https : //www.regexpal.com/
补充:完整性的解释:
^
: 字符串的开头,$
: 字符串的结尾。所以我们把表达式放在一个^..$
块中,以确保我们的模式之外没有任何东西。(2[0-3]|[0-1]?[\d])
: 转换为2[0-3]
OR[0-1]?[\d]
2[0-3]
: 20, 21, 22, 23[0-1]?[\d]
: 0 或 1 或没有 ( ?
) 后跟任何单个数字 ( \d
)。因此,这适用于从 0 到 19 的数字。:
就是那个性格[0-5][\d]
:从 00 到 59 的数字。注意:这不会容忍毫米位置的一位数。