我有一个正则表达式来验证包含'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
?
答案 0 :(得分:3)
是的,使用|
将0x
和1x
个案与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])
所以它看起来像^(?:2[0-4]|[01][0-9])[0-5][0-9],(?:2[0-4]|[01][0-9])[0-5][0-9]$
答案 2 :(得分:0)
答案 3 :(得分:0)
是,
^([0-1][0-9]|2[0-4])([0-5][0-9])(,([0-1][0-9]|2[0-4])([0-5][0-9]))?$
我希望它对你有用。