正则表达式匹配格式为 9.30am-8.45pm 的时间

Regex to Match hours in the format 9.30am-8.45pm

我有这个正则表达式"(\d{1,2}[aM|Am|am|pm|Pm|pM]{2}-\d{1,2}[aM|Am|am|pm|Pm|pM]{2})"

匹配如下字符串:9am-8pm

但我希望能够将这些字符串与另一个正则表达式匹配:9.30am-8.30pm

我有以下正则表达式,但它不匹配任何内容:

(\d{1,2}.\d{1,2}[am|AM|aM|Am][pm|PM|Pm|pM]-\d{1,2}.\d{1,2}[am|AM|aM|Am][pm|PM|Pm|pM])

因为'.'是一个特殊字符,你必须将它转义为\.

(\d{1,2}\.\d{1,2}[am|AM|aM|Am][pm|PM|Pm|pM]-\d{1,2}\.\d{1,2}[am|AM|aM|Am][pm|PM|Pm|pM])

转义 . 否则它将匹配任何字符(换行符除外)。

使 ampm 不区分大小写。

你最好像这样使用它:

/^\d{1,2}\.\d{1,2}(am|pm)-\d{1,2}\.\d{1,2}(am|pm)$/i

几个问题:

  1. . 将匹配任何字符。您应该将其转义为 \.
  2. 您更改了 am/pm 构造,因此它不再以相同的方式匹配

以下符合您的需求吗?

(\d{1,2}\.\d{1,2}[aApP]{1}[mM]{1}-\d{1,2}\.\d{1,2}[aApP]{1}[mM]{1})