1

我有一个匹配 HH:MM 例如 12:23 的正则表达式,它是:

function IsValidTime(timeString)
{
    var pattern = /^\d?\d:\d{2}$/;
    if (!timeString.match(pattern))
        return false;
}

如何更改此行:

var 模式 = /^\d?\d:\d{2}$/;

检查以秒为格式的字符串,如下所示:HH:MM:SS例如 12:23:05

4

4 回答 4

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

对于 24 小时时间,必须使用前导零。

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

24 小时制,前导零可选。

/^(?:1[0-2]|0[0-9]):[0-5][0-9]:[0-5][0-9]$/

对于 12 小时的时间,必须使用前导零。

/^(?:1[0-2]|0?[0-9]):[0-5][0-9]:[0-5][0-9]$/

对于 12 小时时间,前导零可选。

于 2013-02-15T10:33:52.230 回答
10

像下面这样简单的东西应该可以工作:

/([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]/g

正则表达式解释:

  • ([01][0-9]|2[0-3])
    • 以下内容的集合:
    • [01][0-9]字符“0”或“1”后跟 0 到 9 之间的任何数字
    • |-
    • 2[0-3]字符“2”后跟一个 0 到 3 之间的数字
  • :字面冒号
  • [0-5][0-9]- 0 到 5 之间的任何数字后跟 0 到 9 之间的任何数字
  • :字面冒号
  • [0-5][0-9]- 0 到 5 之间的任何数字后跟 0 到 9 之间的任何数字

演示:

正则表达式101

于 2013-02-15T10:34:03.757 回答
0

在 javascript 中以“hh:mm am/pm”格式验证时间

function timeValidation(strTime) {
           var timeFormat = /^(?:1[0-2]|0?[0-9]):[0-5][0-9]\s?(?:am|pm)?/;
           return timeFormat.test(strTime);
       }

timeValidation("12:30 PM") // 返回 true

timeValidation("12:30") // 返回 false

timeValidation("27:30 AM") // 返回 false

于 2014-12-31T15:13:34.200 回答
0

根据您用于检测99:99:99的正则表达式,以下正则表达式就足够了:

/^\d?\d:\d{2}:\d{2}$/

或者更复杂一点

/^\d?\d(?::\d{2}){2}$/

但更好的是(因为它正确匹配范围):

/^(?:[01]?\d|2[0-3]):[0-5]\d:[0-5]\d$/

这将符合函数名称IsValidTime...

于 2013-02-15T10:44:19.297 回答