用于检查正确字符串格式的正则表达式

时间:2014-01-20 19:02:09

标签: regex string

我有正则表达式:

( )?(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的一天(ap;中午为n,午夜为m < / LI>
  • 时间为12小时格式

假设字符串输入为19.24p-12.00p(我们知道19.24对12小时格式无效且没有12.00p这样的东西),这将在指定的表达式上显示有效。如何以这样的方式修改我的正则表达式:当小时是两位数时,数字只是1 [0-2],而不是上面声明的[0-9]。另外,如何使nm一天的时段仅对12.00有效?

感谢。

1 个答案:

答案 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 匹配。

Live demo