问题描述 投票:0回答:3
有人知道怎么了吗?

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

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

24小时时钟格式的启动时间为0-23或00-23,然后是半结肠(:),然后按00-59遵循(可选的是半结肠(:),然后按00-59遵循)。

描述:
php regex time pcre
3个回答
31
投票
( # 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
    

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

这将从00:00到23:59和00:00:00到23:59:59。

Altertantation是一个低头的操作员,因此将其包裹在一个非捕捉组中:

#^(?:([01][0-9])|(2[0-3]))(:[0-5][0-9]){1,2}$# +++ +

6
投票
here
.


2
投票

这也将允许00:00或00:00:00,其他一些则不允许。

还将时间限制为00:00:00至23:59:59或23:59,其他一些时间允许24:00或25:00,等等。
	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.