我想检查一个字段是否是有效的时间值(仅几秒钟)。所以我想接受从 0 到 59 的数字。我得出了这个:
[0-5][0-9]?
这几乎可以完成这项工作。但不包括数字 7-8-9 ... 如果用户数字 07,它可以工作,但我不想强迫用户输入第一个 0。所以我尝试了这样的事情:
([0-5][0-9]? | [0-9])
但这不起作用并产生过多递归调用的错误。
任何想法?
我想检查一个字段是否是有效的时间值(仅几秒钟)。所以我想接受从 0 到 59 的数字。我得出了这个:
[0-5][0-9]?
这几乎可以完成这项工作。但不包括数字 7-8-9 ... 如果用户数字 07,它可以工作,但我不想强迫用户输入第一个 0。所以我尝试了这样的事情:
([0-5][0-9]? | [0-9])
但这不起作用并产生过多递归调用的错误。
任何想法?
在您的第二个正则表达式中,您需要?
从第一部分中删除它,并使其[1-5]
代替[0-5]
:
[0-9]|[1-5][0-9]
如果您想足够灵活以同时允许7
和07
,请使用[0-5]
:
[0-9]|[0-5][0-9]
然后,简化上述正则表达式,您可以使用:
[0-5]?[0-9] // ? makes [0-5] part optional
这应该足够了:[0-5]?\d
但是,如果您想强制执行两位数(即。01
,02
...),您应该只使用[0-5]\d
如果要使十位数可选,而不是单位位置,请将其放在?
那里:
[0-5]?[0-9]
如果您希望 0 是可选的,请将 移到?
之后[0-5]
。
[0-5]?[0-9]
应该这样做。