解析持续时间字符串

时间:2015-01-01 17:56:36

标签: php regex

我想解析像

这样的持续时间字符串

1h30m40s 56m12s

PHP中的

。我尝试以下Regexp

^(\d+)h(\d+)m(\d+)s$

但它没有使用像 56m12s 这样的字符串。 我如何让时间可选?

2 个答案:

答案 0 :(得分:2)

您可以在给定的子模式周围放置一个optional非捕获组。

^(?:(\d+)h)?(\d+)m(\d+)s$

如果您只想验证这些字符串,可以删除不必要的捕获组。

^(?:\d+h)?\d+m\d+s$

答案 1 :(得分:1)

?用于零次或一次。正则表达式的其他部分不需要括号:

^(\d+h)?\d+m\d+s$