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

时间:2010-04-28 20:13:32

标签: javascript regex

/^\d{1,2}[:][0-5][0-9]$/

是我的。这将分钟限制在00-59。但是,它不会将小时数限制在0到12之间。对于相似性和一致性,如果可能,我希望单独使用RegEx。

此外,我希望第一个数字是可选的。即09:30接受以及9:30。我玩了范围,但超出范围的东西总是可以接受的。

6 个答案:

答案 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)

Thanks!!! I use this Javascript code now: function Check_arrival(time) { //Assuming you are working in 12 hour time, 0 is not a valid var patt = new RegExp("^(0?[1-9]|1[012]):[0-5][0-9]$"); var res = patt.test(time); return res; } res=true|false

答案 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处不能容忍一位数字。