可选,任何顺序

时间:2013-02-05 12:56:54

标签: javascript regex

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

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

但问题是它适用于PT158M12S但不适用于PT12S158M。可以在P之后制作小组,T之后的小组是否可以按任何顺序排列?

2 个答案:

答案 0 :(得分:2)

尝试

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

(Rohit答案的缩短版)

然而,这并不妨碍重复任何组,例如PT1M2M。之后你必须检查一下。

答案 1 :(得分:0)

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