时间表达式字符串的正则表达式模式
Posted
技术标签:
【中文标题】时间表达式字符串的正则表达式模式【英文标题】:Regex pattern for time expression string 【发布时间】:2014-09-05 09:38:16 【问题描述】:我想解析一个时间表达式字符串(有 4 组:周(w)、日(d)、小时(h)和分钟(m))。 一些例子是:
-
-3w 4d 2h 1m
+3w 2h 1m
3d 1m
1d
...
我想出了这个模式:
([+-]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)是可选的
但是这种模式行不通。请帮忙。对不起我的英语!
【问题讨论】:
在什么情况下不行? 【参考方案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?$
修改了你的正则表达式。现在可以工作了。不过可能需要更多测试。
查看演示。
http://regex101.com/r/sB4kE6/4
【讨论】:
【参考方案2】:这是我用于验证的内容:
^(?:(?: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 格式,允许大写 am/pm。
也许它可以帮助你朝着正确的方向前进。
【讨论】:
以上是关于时间表达式字符串的正则表达式模式的主要内容,如果未能解决你的问题,请参考以下文章