Regular expressions·a full ISO timestamp

a full ISO timestamp

Matches a full ISO timestamp. It is anchored at both ends, so the whole string has to match. There are no capture groups.

Pattern
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/
Match scope
the whole string
Capture groups
0
What it catches in the first example
2024-07-29T12:00:00Z

Try it yourself

Type any text and the parts this expression catches are highlighted. It runs in your browser and is never sent anywhere.

2024-07-29T12:00:00Z

1 match

Examples that match

  • 2024-07-29T12:00:00Z
  • 2024-07-29T12:00:00.123+09:00

Examples that do not match

  • 2024-07-29 12:00:00
  • 2024-07-29T12:00:00

Other expressions in this group

How to read this

  • With ^ and $ around it, the whole string must match; without them the match can sit anywhere. Always anchor an expression you use for validation.
  • Round brackets ( ) capture what they wrap. When you only need grouping, write (?: ) so the numbering of later groups does not shift.
  • Every expression here is checked against its examples. Even so, "looks like an email" and "is a real inbox" remain different questions.
  • Nested open-ended repeats such as (a+)+ can blow up on certain inputs. Look for that shape before pasting someone else’s expression into your code.

Frequently asked questions

Q. What is the regex for a full ISO timestamp?

^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$.

Q. Which strings match?

Text like 2024-07-29T12:00:00Z matches; text like 2024-07-29 12:00:00 does not.

Q. Does the whole string have to match?

Yes. It is wrapped in ^ and $, so nothing but a full match passes.

Q. How do I use what it caught?

There are no capture groups, so only the whole match (match[0]) comes back. Wrap the part you need in brackets to capture it.