0

我正在尝试使用以下模式解析 ISO 8601 持续时间:

P(\d+Y)?(\d+M)?(\d+D)?(\d+W)?T(\d+H)?(\d+M)?(\d+S)?

但问题是它适用于PT158M12S但不适用于PT12S158M. 是否可以使后面的组P和后面的组T按任何顺序排列?

4

2 回答 2

2

Try

P(\d+[YMDW]){0,4}T(\d+[HMS]){0,3}

(shorter version of Rohit's answer)

However this does not prevent to repeat any group, e.g. PT1M2M. You will have to check that afterwards.

于 2013-02-05T13:03:06.373 回答
0

Google 的 Closure 库具有用于解析此类 ISO 8601 持续时间的内置函数:Interval.fromIsoString(duration)

于 2013-02-05T13:21:50.063 回答