我有一个正则表达式来验证包含“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?
是的,用于|将0xand 与1xcase分开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]))?$
我希望它对你有用。