regex hh:mm am/pm格式的时间正则表达式

vfh0ocws  于 2023-01-14  发布在  其他
关注(0)|答案(7)|浏览(186)

我需要对学校项目的输入进行严格的验证,时间格式为HH:MM am/pm。到目前为止,我已经得到了以下RegEx表达式:

(([01]?[0-9]):([0-5][0-9]) ([AaPp][Mm]))

下面是一个工作演示:http://regexr.com/3c9b5
唯一的问题是它接受13:00到19:59的时间
正确的正则表达式是什么?RegEx对我来说一直很难

dy1byipe

dy1byipe1#

您可以用途:

\b((1[0-2]|0?[1-9]):([0-5][0-9]) ([AaPp][Mm]))
EDIT:         ^ changed this from "0" to "1" to not accept 00:00
cgh8pdjw

cgh8pdjw2#

您可以使用以下命令:

^([1-9]|0[1-9]|1[0-2]):[0-5][0-9] ([AaPp][Mm])$

它将接受1:00 am、01:00 am、12:00 PM、11:00 pm、12:59 Pm,但不接受00:00 am、00:00 PM或01:60 Am。

h43kikqp

h43kikqp3#

([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])\s*([AaPp][Mm])

适用于:
上午10:00
晚上10点
上午10时
晚上十点
晚上十点
上午十点
晚上10:30
23:46分

rfbsl7qr

rfbsl7qr4#

这个正则表达式有3个部分,由OR运算符分隔。
每个器件支持一种HH
它们是0[1-9]、[1-9]和1[0-2]。

/(0[1-9]:[0-5][0-9]((\ ){0,1})((AM)|(PM)|(am)|(pm)))|([1-9]:[0-5][0-9]((\ ){0,1})((AM)|(PM)|(am)|(pm)))|(1[0-2]:[0-5][0-9]((\ ){0,1})((AM)|(PM)|(am)|(pm)))/
vybvopom

vybvopom5#

我用了这个正则表达式

([0-9]{2})\\/([0-9]{2})\\/([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2}) (am|pm)

你可以试试这个,希望对你有帮助!

siv3szwd

siv3szwd6#

String regex = "([01]?[0-9]|2[0-3]):[0-5][0-9]";

这将适用于24小时确认

3mpgtkmj

3mpgtkmj7#

如果你正在寻找匹配所有时间情况的超级解决方案,使用这个正则表达式:

((1[0-9]|0?[1-9])(:([0-5][0-9])) ?([AaPp][Mm])?|(1[0-9]|0?[1-9]) ?([AaPp][Mm]))(\s+([A-Z]{3,5})?|$)

它匹配以下所有内容:

  • simple format:12:05、12:04、1pm、12:05,但不包括13PM或28AM
  • simple format1x:美国标准时间下午12点,美国中部时间凌晨1点或新西兰中部时间下午2点

它也不匹配45 minute12。请尝试以下操作:
https://regex101.com/r/OU5DM4/1

相关问题