RegEx - 时间验证((h)h:mm)

Jos*_*eld 11 javascript regex

/^\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)

  • 感谢regEx! (2认同)

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 - 09
  • 1[012] 比赛10 - 12.


Nik*_* VJ 8

对于寻找 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 的数字。注意:这不会容忍毫米位置的一位数。


Jon*_*der 5

/^(10|11|12|[1-9]):[0-5][0-9]$/
Run Code Online (Sandbox Code Playgroud)

我不认为你想要0:50作为有效时间.