时间表达式字符串的正则表达式模式

时间:2014-09-05 09:38:16

标签: regex expression days hour minute

我想解析一个时间表达式字符串(有4组:周(w),日(d),小时(h)和分钟(m))。 一些例子是:

  1. -3w 4d 2h 1m
  2. + 3w 2h 1m
  3. 3d 1m
  4. 1D
  5. ...
  6. 我想出了这种模式:

    ([+-]{0,1})([0-9]+)w?\s?(0?[1-9]|[12][0-9]|3[01])d?\s?([01]?[0-9]|2[0-3])h?\s?([0-5][0-9])m?
    
    • + - 或无
    • 开头
    • 周前的价值无限制
    • 前一天的值是0到31
    • 小时前的值是0到23
    • 分钟前的值为0到59
    • 空格(\ s)是可选的

    但这种模式不起作用。请帮忙。抱歉我的英文!

2 个答案:

答案 0 :(得分:1)

^([+-]?)([0-9]+)?w?\s*?(0?[1-9]|[12][0-9]|3[01])?d?\s*?([01]?[0-9]?|2[0-3])?h?\s*?([0-5]?[0-9])?m?$

现在修改你的regex.Works。虽然可能需要更多的测试。

参见演示。

http://regex101.com/r/sB4kE6/4

答案 1 :(得分:0)

这是我用于验证的内容:

 ^(?:(?:0?[0-9]|1[0-2]):[0-5][0-9]\s?(?:(?:[Aa]|[Pp])[Mm])?|(?:1[3-9]|2[0-3]):[0-5][0-9])$

它适用于24:00和12:00格式,允许资本上午/下午。

也许它可以帮助你朝着正确的方向发展。