正则表达式检查时间

时间:2013-04-05 06:32:46

标签: c# regex

我有以下正则表达式:

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

目前接受00:00:0000:0000 我不希望它这样做。 它可以接受00:0100:00:01但不能全部为零。

我在正则表达式中错过了什么?

2 个答案:

答案 0 :(得分:3)

您可以使用否定前瞻来解决此问题:

^(?!^(\D|0)*$)(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$

与非数字和零匹配的否定前瞻。因此,如果您的时间只有零,则无法匹配。

您可以在www.debuggex.com上详细了解它的功能。

答案 1 :(得分:0)

我认为使用另一个匹配的正则表达式可能更容易。不管你想要什么。

像这样:^(00:?)+$应该与你不想要的相匹配。在使用当前正则表达式之前,只需使用该检查。在一个正则表达式中执行所有操作可能会使构建和更改变得混乱。