次のパターンでISO8601の期間を解析しようとしています。
P(\d+Y)?(\d+M)?(\d+D)?(\d+W)?T(\d+H)?(\d+M)?(\d+S)?
しかし、問題はそれが動作するPT158M12S
が動作しないことPT12S158M
です。後P
のグループと後のグループT
を任意の順序で作成することはできますか?
次のパターンでISO8601の期間を解析しようとしています。
P(\d+Y)?(\d+M)?(\d+D)?(\d+W)?T(\d+H)?(\d+M)?(\d+S)?
しかし、問題はそれが動作するPT158M12S
が動作しないことPT12S158M
です。後P
のグループと後のグループT
を任意の順序で作成することはできますか?
試す
P(\d+[YMDW]){0,4}T(\d+[HMS]){0,3}
(Rohitの回答の短いバージョン)
ただし、これはグループの繰り返しを妨げるものではありませんPT1M2M
。後で確認する必要があります。
GoogleのClosureライブラリには、このようなISO 8601期間を解析するための組み込み関数があります。Interval.fromIsoString(duration)