0

我有一个正则表达式来验证包含“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

4 回答 4

3

是的,用于|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]$
于 2013-01-18T15:12:29.613 回答
0

您可以在正则表达式中使用 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]$

于 2013-01-18T15:11:30.080 回答
0

您可以在此处使用条件正则表达式和教程。

于 2013-01-18T15:13:59.953 回答
0

是的,

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

我希望它对你有用。

于 2013-01-18T15:14:18.633 回答