我有一个正则表达式来验证包含“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”的字符串这就是我正在使用的:
^[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
and 与1x
case分开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]$
您可以在正则表达式中使用 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]))?$
我希望它对你有用。