我有一个正则表达式来验证含有“HHMM”或字符串“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
?
我有一个正则表达式来验证含有“HHMM”或字符串“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
?
是,使用|
到0x
和1x
箱子从2y
分开:
^(?:[01][0-9]|2[0-4])[0-5][0-9],(?:[01][0-9]|2[0-4])[0-5][0-9]$
的(?:...)
创建一个非捕获组,限制运算符的范围。如果您确实想要捕获HH
值(例如,稍后用某个替换项来替换它),请改为使用(...)
。
更新:在所有
(?:(?:[01][0-9]|2[0-3])[0-5][0-9]|2400)
但是我认为这是更好地只是不允许任何24MM
(包括2400
):允许2400
但避免像2411
所有其它无效的时候可以用另一个|
完成因为它确实应该写成00MM
。在这种情况下,正则表达式只是变成:
^(?:[01][0-9]|2[0-3])[0-5][0-9],(?:[01][0-9]|2[0-3])[0-5][0-9]$
谢谢,这有助于一点点。但只是发现像2411这样的值也是有效的,所以需要添加检查。 但我想0000 - 2359是足够好的,因为我怀疑任何人使用2400无论如何 –
@恩运动,完全谢谢。更新了这两种情况的帖子。但0000-2359似乎是最好的选择。 –
@ En-Motion - 不要忘记接受答案。这将有助于您在未来获得更多答案。 – JDB
你可以使用OR表达式中的正则表达式(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]$
是,
^([0-1][0-9]|2[0-4])([0-5][0-9])(,([0-1][0-9]|2[0-4])([0-5][0-9]))?$
我希望它会为你工作。
**不要重新发明车轮** ..有一些方法可以用来验证日期......您使用哪种语言! – Anirudha
并请阅读您使用的标签说明。 –