I’m attempting to write Regex to match the ISO8601 standard for temporal durations, but only where PT
and M
or S
are valid.
So far I have found a full example of ISO8601 regex but it is more complex than I need. I need match durations like the following:
- PT7S
- PT10M50S
- PT150S
Essentially I want the Regex to always check that:
- capitalised
PT
is at the beginning of the string - M is preceded by a whole number
- S is preceded by a whole number
- M comes before S
My attempt so far:
- capitalised PT at the beginning =
^PT
- M preceded by a whole number =
[0-9]+M
– except this allows something like10.5M
because the5M
counts - S preceded by a whole number = same as above
- M comes before S. Again no idea!
I’m really stuck on trying to figure this out, I’ve been trying to get each part to match so I could try and combine them all later but I can’t get over the first hurdle.