正则表达式用于时间戳

时间:2018-01-24 00:25:01

标签: php regex validation

我正在研究时间戳的验证。这是我的代码。

它不应该接受类似" 16:59' 99"或" 16:59' 999"作为'之后的2位数应该小于59但它实际上接受了那些无效的格式。我的正则表达式有什么问题?

 O(n log n) + O(m log m) + O(least(n,m))

2 个答案:

答案 0 :(得分:1)

为什么不试试这个:

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

Regxr

上查看此内容

答案 1 :(得分:1)

第一行和第三行中的

.表示匹配任何内容,而不匹配点,因此请使用\.来匹配文字点。

$pattern = "(^(2[0-3]|[0-1]{0,1}[0-9]):[0-5][0-9]'[0-5][0-9]\.[0-9]{1,3}$)|
            (^(2[0-3]|[0-1]{0,1}[0-9]):[0-5][0-9]'[0-5][0-9]$)|
            (^(2[0-3]|[0-1]{0,1}[0-9]):[0-5][0-9]\.[0-9]{1,3}$)|
            (^(2[0-3]|[0-1]{0,1}[0-9]):[0-5][0-9]$)";

只有一个点,'正在匹配。

请参阅online demo here