gpt4 book ai didi

php - 用于时间验证的正则表达式

转载 作者:可可西里 更新时间:2023-10-31 22:18:54 25 4
gpt4 key购买 nike

我想用正则表达式验证时间。我创建了以下表达式:

'#^([01][0-9])|(2[0-4])(:[0-5][0-9]){1,2}$#'

问题是:

<?php
var_dump(preg_match('#^([01][0-9])|(2[0-4])(:[0-5][0-9]){1,2}$#', '14:25'));
// Returns 1 (OK)

var_dump(preg_match('#^([01][0-9])|(2[0-4])(:[0-5][0-9]){1,2}$#', '25:25'));
// Returns 0 (OK)

var_dump(preg_match('#^([01][0-9])|(2[0-4])(:[0-5][0-9]){1,2}$#', '14:2555'));
// Returns 1 (instead of 0 as I would like to get)
?>

有人知道怎么回事吗?

最佳答案

24 小时格式正则表达式模式的时间:

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

24 小时制格式是从 0-23 或 00-23 开始,然后是分号 (:),然后是 00-59,然后是(可选的分号 (:),然后是 00-59)。

描述:

(                  # start of group #1
[01]?[0-9] # start with 0-9,1-9,00-09,10-19
| # or
2[0-3] # start with 20-23
) # end of group #1
: # follow by a semi colon (:)
[0-5][0-9] # follow by 0..5 and 0..9, which means 00 to 59
( # start of group #2
: # follow by a semi colon (:)
[0-5][0-9] # follow by 0..5 and 0..9, which means 00 to 59
) # end of group #2
? # optional third part

匹配时间格式:

01:00, 02:00, 13:00,
1:00, 2:00, 13:01,
23:59, 15:00,
00:00, 0:00,
14:34:43, 01:00:00

不匹配的时间格式:

 24:00             # hour is out of range [0-23]
12:60 # minute is out of range [00-59]
0:0 # invalid format for minute, at least 2 digits
13:1 # invalid format for minute, at least 2 digits
0:00:0 # invalid format for seconds, at least 2 digits
101:00 # hour is out of range [0-23]

示例:

var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:25'));    // OK
var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '25:25')); // KO
var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '25:30')); // KO
var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:2555')); // KO
var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:65')); // KO
var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:59')); // OK
var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:34:43')); // OK

关于php - 用于时间验证的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11296536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com