小时的正则表达式语法

时间:2014-03-07 16:54:09

标签: php regex hour ereg

我需要在PHP中使用几个小时的正则表达式,我正在使用ereg。我需要它接受1-23而不带前导零。

^([1-9])|([1][0-9])|([2][0-3])$

这就是我正在使用的但我无法找到错误的位置。

1 个答案:

答案 0 :(得分:2)

轮换(|)适用于周围组中的所有内容,如果不在组中,则适用于全局内容。因此,在您的模式中,^仅适用于第一个模式,而$仅适用于最后一个模式。换句话说,您的模式匹配任何以1到9的数字开头的字符串,包含1后跟0到9之间的数字,或以2结尾,后跟0到3之间的数字。

尝试将不同的选项放在一个组中:

^([1-9]|1[0-9]|2[0-3])$

另请注意,24-hour time从00:00开始,因此您的模式应该更像这样:

^(1?[0-9]|2[0-3])$

或者,如果您需要小时为2位数:

^([01][0-9]|2[0-3])$