我正在尝试为特定日期的时间创建正则表达式。它正确处理7am
和11:34pm
。它应该能够识别不良形成的时间。现在我已经尝试为这个问题编写一个有效的正则表达式。
正则表达式 ^(([0]?[0-9])|([1][0-2]))(\:[00-59]{2})?(am|pm){1}\b
问题是,在antemeridiem中,小时部分从1
(或01
)到12
不等,但在后期时间从0
(或{{1}开始变化}}}到00
。我无法推断这种情况的正则表达式。请帮助。
答案 0 :(得分:2)
我不会开始争论12小时系统应该是什么样的,但只是按照给定/固定的要求使用你的要求:
问题在于,在antemeridiem中,小时部分从1(或01)到12不等,但是在postmeridiem中它从0(或00)到12变化。我无法推断出这种情况的正则表达式。请帮助。
然后,这个正则表达式应该可以工作:
^(((0?[1-9]|1[012])(:[0-5][0-9])?am)|((0?[0-9]|1[012])(:[0-5][0-9])?pm))\b
亲眼看看here。
答案 1 :(得分:1)
您可以随时执行以下操作:
(我的正则表达式)| (我下午的正则表达式)
只要你的括号在正确的地方,它应该可以正常工作。
答案 2 :(得分:0)
尝试这样的事情:
^(0?[1-9]|1[0-2])(:([0-5]?[0-9]))?(am|pm)$
答案 3 :(得分:0)
这应符合您的要求。
^(([0]?[0-9])|([1][0-2])){1}(\:)?([0-5][0-9])?(am|pm){1}
此外,您正在尝试使用正则表达式匹配数字
[00-59]
我不认为它是这样的,你要匹配字符串,最好是[0-5] [0-9]。
答案 4 :(得分:0)
我也想为此找到一个好的正则表达式。我使用了一个名为Expresso的工具,并提出以下表达式进行12小时时间匹配:
((1{0,1}[012]{1})|[0-9]{1}){1}((:|\s)?[0-5]{1}[0-9]{1})?((a|p|A|P){1}(m|M){1})?
我针对以下数据进行了测试:
12:00
12am
11111111PM
pm
11122am
13
00am
9a
表达了以下匹配:
12:00
12am
1111
1111PM
1112
2am
1
3
0
0am
9
如果您要验证数据并将匹配项与数据长度进行比较,则可以抛弃从11111111PM
和11122am
找到的部分匹配项。这对我有用。