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
^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$a date in ISO form^(?:0[1-9]|[12]\d|3[01])/(?:0[1-9]|1[0-2])/\d{4}$a date written with slashes^(?:[01]\d|2[0-3]):[0-5]\d$a time on the 24-hour clock^(?:0?[1-9]|1[0-2]):[0-5]\d\s?(?:am|pm)$a time with am or pm^P(?=\d|T\d)(?:\d+Y)?(?:\d+M)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$an ISO duration^\d+\.\d+\.\d+(?:-[0-9a-z.-]+)?(?:\+[0-9a-z.-]+)?$a semantic version number^\d+$a whole number with no sign^[+-]?\d+$a whole number that may carry a signHow 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.