正则表达式匹配未正确验证

Regex match not validating correctly

我有以下正则表达式 ^(2[0-3]|1?[0-9])?(\:[0-5]?[0-9])?$

8:45 匹配,但是 08:45 不匹配。

如何重写以允许 08:45


如果可能,我还想检查 .: 而不仅仅是 .

除了“1”,还允许在“20:00”之前的几个小时开始时使用“0”:

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

请注意,您不需要转义冒号 - 它们没有特殊的正则表达式含义。

此外,由于所有内容都是可选的,因此此正则表达式匹配一个空白字符串。

如果要匹配某物,请在^之后添加(?!$)^(?!$) 是锚定到开始的否定前瞻,要求输入结束不跟随输入开始(即,输入不是零长度)。

请试试这个正则表达式。

[0]?\d[:\.]\d\d

可以捕捉到8:4508:458.45和08.45

或单击此处查看结果。

https://regex101.com/r/tLEqhH/1