Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式验证HHMM字符串_Regex - Fatal编程技术网

Regex 正则表达式验证HHMM字符串

Regex 正则表达式验证HHMM字符串,regex,Regex,我有一个正则表达式来验证包含“HHMM”或“HHMM,HHMM”的字符串 这就是我正在使用的: ^[0-2][0-9][0-5][0-9],[0-2][0-9][0-5][0-9]$ 这种方法在1247正常3247不正常的情况下工作。 类似地,12472200可以,但12472290不行 但是,不允许允许允许24小时时钟值,例如2500。 有没有办法在正则表达式中设置一个复选框,如果小时的第一部分是2,那么第二部分只能是0-4?您可以在正则表达式中使用OR表达式(2[0-4]|[01][0-9

我有一个正则表达式来验证包含“HHMM”或“HHMM,HHMM”的字符串 这就是我正在使用的:

^[0-2][0-9][0-5][0-9],[0-2][0-9][0-5][0-9]$
这种方法在
1247
正常
3247
不正常的情况下工作。 类似地,
12472200
可以,但
12472290
不行

但是,不允许允许允许24小时时钟值,例如
2500

有没有办法在正则表达式中设置一个复选框,如果小时的第一部分是
2
,那么第二部分只能是
0-4

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

是,使用
|
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]$
您可以使用条件和教程。

您可以使用条件和教程。

^([0-1][0-9]|2[0-4])([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])(,([0-1][0-9]|2[0-4])([0-5][0-9]))?$

我希望它能对你有用。

不要重新发明轮子。你可以使用一些方法来验证日期。你使用哪种语言!请阅读您使用的标签说明。不要重新发明轮子。有一些方法可以用来验证日期。您使用的是哪种语言!请阅读您使用的标签的说明。谢谢,这对您的帮助很大。但我们刚刚发现2411这样的值也是有效的,所以需要添加检查。但我认为0000-2359已经足够好了,因为我怀疑是否有人使用2400anyhow@En-动议,谢谢,没错。更新了这两个案例的帖子。但是0000-2359似乎是最好的选择。@En动议-别忘了接受答案。这将有助于你在将来获得更多问题的答案。谢谢你的帮助。但我们刚刚发现2411这样的值也是有效的,所以需要添加检查。但我认为0000-2359已经足够好了,因为我怀疑是否有人使用2400anyhow@En-动议,谢谢,没错。更新了这两个案例的帖子。但是0000-2359似乎是最好的选择。@En动议-别忘了接受答案。它将帮助你在将来获得更多问题的答案。