正则表达式以9.30am-8.45pm格式匹配小时

时间:2015-09-03 15:47:45

标签: .net regex

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

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

但我希望能够将这些字符串与另一个正则表达式匹配:上午9:30至晚上8:30

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

(\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])

3 个答案:

答案 0 :(得分:1)

由于'.'是一个特殊字符,因此您必须将其作为\.

进行转义
(\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])

答案 1 :(得分:1)

转义padding-left:20px; padding-right:20px;否则它会匹配任何字符(换行符除外)。

使.am不区分大小写。

最好你应该像这样使用它:

pm

答案 2 :(得分:1)

一些问题:

  1. .将匹配任何字符。您应该将其作为\.
  2. 转义
  3. 您已经更改了am / pm构造,因此它的方式不一样
  4. 以下是否符合您的需求?

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