我有正则表达式:
( )?(1)?[0-9]\.[0-5][0-9](a|p|n|m)( )?-( )?(1)?[0-9]\.[0-5][0-9](a|p|n|m)(\n)?
上面的表达式是一种时间格式:h.nna
,
其中:
h
是一位或两位数小时nn
是两位数分钟的时间段;和a
分别为antemeridian或postmeridian的一天(a
或p
;中午为n
,午夜为m
< / LI>
假设字符串输入为19.24p-12.00p
(我们知道19.24对12小时格式无效且没有12.00p这样的东西),这将在指定的表达式上显示有效。如何以这样的方式修改我的正则表达式:当小时是两位数时,数字只是1 [0-2]
,而不是上面声明的[0-9]
。另外,如何使n
和m
一天的时段仅对12.00有效?
感谢。
答案 0 :(得分:0)
您可以使用以下正则表达式(PCRE兼容):
^(12\.00[mn]|12(\.[0-5]\d)[ap]|00\g'2'a|([0]?[1-9]|1[0-1])\g'2'[ap])-\g'1'$
这会将 00.00a 与 00.59a 匹配。