正则表达式验证HHMM字符串

时间:2013-01-18 15:08:14

标签: regex

我有一个正则表达式来验证包含'HHMM'或'HHMM,HHMM'的字符串 这就是我正在使用的:

^[0-2][0-9][0-5][0-9],[0-2][0-9][0-5][0-9]$

1247中的这种作品是好的3247不是。 同样1247,2200也可以,但1247,2290不是。

但是,不允许允许24小时时钟值,例如2500。 有没有办法检查正则表达式,如果小时的第一部分是2,那么第二部分只能是0-4

4 个答案:

答案 0 :(得分:3)

是的,使用|0x1x个案与2y分开:

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

(?:...)创建一个非捕获组,限制|运算符的范围。如果您确实要捕获HH值(例如,稍后将其替换为替代品),请改用(...)

更新:允许2400,但可以使用其他2411来避免所有其他无效时间,例如|

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

但是我认为最好不要允许任何24MM(包括2400),因为它真的应该写成00MM。在这种情况下,正则表达式变为:

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

答案 1 :(得分:0)

您可以在正则表达式(2[0-4]|[01][0-9])

中使用OR表达式

所以它看起来像^(?:2[0-4]|[01][0-9])[0-5][0-9],(?:2[0-4]|[01][0-9])[0-5][0-9]$

答案 2 :(得分:0)

您可以使用条件regexps和教程here

答案 3 :(得分:0)

是,

^([0-1][0-9]|2[0-4])([0-5][0-9])(,([0-1][0-9]|2[0-4])([0-5][0-9]))?$

我希望它对你有用。