4

我想检查一个字段是否是有效的时间值(仅几秒钟)。所以我想接受从 0 到 59 的数字。我得出了这个:

[0-5][0-9]?

这几乎可以完成这项工作。但不包括数字 7-8-9 ... 如果用户数字 07,它可以工作,但我不想强迫用户输入第一个 0。所以我尝试了这样的事情:

([0-5][0-9]? | [0-9]) 

但这不起作用并产生过多递归调用的错误。

任何想法?

4

4 回答 4

8

在您的第二个正则表达式中,您需要?从第一部分中删除它,并使其[1-5]代替[0-5]

[0-9]|[1-5][0-9]

如果您想足够灵活以同时允许707,请使用[0-5]

[0-9]|[0-5][0-9]  

然后,简化上述正则表达式,您可以使用:

[0-5]?[0-9]   // ? makes [0-5] part optional
于 2013-02-12T19:25:36.150 回答
1

这应该足够了:[0-5]?\d

但是,如果您想强制执行两位数(即。0102...),您应该只使用[0-5]\d

于 2013-02-12T19:26:41.377 回答
0

如果要使十位数可选,而不是单位位置,请将其放在?那里:

[0-5]?[0-9]
于 2013-02-12T19:29:18.360 回答
0

如果您希望 0 是可选的,请将 移到?之后[0-5]

[0-5]?[0-9]应该这样做。

于 2013-02-12T19:30:27.870 回答