There's an error in regex used to parse iso8601:
|
+ '(T([0-9]{2})(((:?([0-9]{2}))?((:?([0-9]{2}))?(\.([0-9]+))?))?)' |
\. is treated by JavaScript as ., resulting in "any character" match, rather than "dot".
A simple fix would be to replace \. with [.] which is agnostic of escapes. This also needs a test.