正则表达式为12小时和24小时时间格式

F11*_*F11 7 c# regex asp.net

我使用两个正则表达式来验证12小时和24小时格式的时间,但在某些情况下它不起作用.我在这些正则表达式中做错了什么?它不起作用

为了验证12小时格式,如上午10:00 /下午12:00,我使用了正则表达式

^(([0]?[0-9]|1[0-2]):[0-5][0-9][ ][aApP][mM])|((1[3-9]|2[0-3]):[0-5][0-9])$
Run Code Online (Sandbox Code Playgroud)

为了验证24小时格式,如23:00/12:00,我使用了正则表达式

^(([0]?[0-9]|1[0-2]):[0-5][0-9])|((1[3-9]|2[0-3]):[0-5][0-9])$
Run Code Online (Sandbox Code Playgroud)

Jer*_*rry 13

我不确定你为什么在你的第一个正则表达式中有一些24小时格式.仅12小时的格式就可以简化为:

new Regex(@"^(?:0?[0-9]|1[0-2]):[0-5][0-9] [ap]m$", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

对于24小时格式,您可以将其简化为:

new Regex(@"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$");
Run Code Online (Sandbox Code Playgroud)

或者将两者结合起来:

new Regex(@"^(?:(?:0?[0-9]|1[0-2]):[0-5][0-9] [ap]m|(?:[01][0-9]|2[0-3]):[0-5][0-9])$", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)