Regex para data e hora ISO 8601

Use /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})$/ para verificar se uma string inteira é uma data e hora válida no formato ISO 8601. Todos os exemplos abaixo foram testados contra o padrão, e você pode abri-los no Regex Tester com as amostras já carregadas.

Atualizado em

/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})$/
Abrir no Regex Tester
EntradaResultado
2026-10-30T14:30:00Z✓ Corresponde
2026-10-30T14:30:00.123+05:30✓ Corresponde
2026-10-30T14:30Z✓ Corresponde
2026-10-30 14:30:00✗ Não corresponde
2026-10-30T14:30:00✗ Não corresponde
2026-10-30T14:30:00+0530✗ Não corresponde

Como o padrão funciona

ParteSignificado
\d{4}-\d{2}-\d{2}A data
TO separador T literal
\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?Horas e minutos, com segundos e frações opcionais
(?:Z|[+-]\d{2}:\d{2})Z para UTC, ou um deslocamento como +05:30

Exemplos de código

JavaScript

const re = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})', value))

PHP

preg_match('/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})$/', $value) === 1;

Observações e limitações

Isso exige um fuso horário, o que evita timestamps ambíguos. new Date().toISOString() em JavaScript sempre gera uma string que corresponde ao padrão. Converta timestamps com o Conversor de Unix Timestamp.

Perguntas frequentes

Qual é a regex para data e hora ISO 8601?
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})$/ — ela corresponde à string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Entre os exemplos testados, estes correspondem: 2026-10-30T14:30:00Z, 2026-10-30T14:30:00.123+05:30, 2026-10-30T14:30Z. Os outros não.
Como testo essa regex?
Clique em “Abrir no Regex Tester” — o padrão, as flags e o texto de exemplo são carregados automaticamente, e as correspondências são destacadas conforme você edita.