我有以下正则表达式:
^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$
目前接受00:00:00
或00:00
或00
我不希望它这样做。
它可以接受00:01
或00:00:01
但不能全部为零。
我在正则表达式中错过了什么?
答案 0 :(得分:3)
您可以使用否定前瞻来解决此问题:
^(?!^(\D|0)*$)(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$
与非数字和零匹配的否定前瞻。因此,如果您的时间只有零,则无法匹配。
您可以在www.debuggex.com上详细了解它的功能。
答案 1 :(得分:0)
我认为使用另一个匹配的正则表达式可能更容易。不管你想要什么。
像这样:^(00:?)+$
应该与你不想要的相匹配。在使用当前正则表达式之前,只需使用该检查。在一个正则表达式中执行所有操作可能会使构建和更改变得混乱。