
Validador Regex de Data em Javascript
Teste e valide facilmente formatos de data como DD/MM/YYYY, MM-DD-YYYY ou timestamps ISO 8601 usando o Validador Regex de Data em JavaScript. Seja para construir formulários, analisar logs ou limpar dados em JavaScript, esta ferramenta ajuda a garantir datas precisas e corretamente formatadas. Experimente também o JavaScript Regex Tester para experimentar padrões, ou combine com o Validador Regex de Email em JavaScript e o Validador Regex de Endereço IP em JavaScript para validar dados completos do usuário.
Validador Regex de Data em Javascript - Documentação
O que é um Regex de Data?
Em JavaScript, uma expressão regular (regex) para datas ajuda a identificar e validar se uma string corresponde a um formato de data específico. Seja para construir formulários, filtros de dados ou logs, validar datas garante que os usuários insiram dados corretamente e previne erros no processamento posterior.
Um regex de data pode corresponder a padrões como:
DD/MM/YYYY
MM-DD-YYYY
YYYY-MM-DD
Timestamps ISO 8601 como 2023-06-05T12:30:00Z
Padrão Regex para Validação de Data em JavaScript
Veja um regex comumente usado para validação básica de DD/MM/YYYY:
/^(0[1-9]|[12][0-9]|3[01])[\/\-](0[1-9]|1[0-2])[\/\-](19|20)\d\d$/Detalhamento:
^(0[1-9]|[12][0-9]|3[01])- Valida o dia (01 a 31)[\/\-]- Corresponde a / ou - como separador(0[1-9]|1[0-2])- Valida o mês (01 a 12)(19|20)\d\d$- Valida o ano (1900 a 2099)
Como Validar uma Data com Regex em JavaScript
Veja um trecho simples de JavaScript usando regex para validação de data:
function isValidDate(dateString) { const dateRegex = /^(0[1-9]|[12][0-9]|3[01])[\/\-](0[1-9]|1[0-2])[\/\-](19|20)\d\d$/; return dateRegex.test(dateString); }
console.log(isValidDate("25/12/2024")); // true console.log(isValidDate("2024-12-25")); // false
Regex é útil para verificar se uma string corresponde a um formato específico. No entanto, o construtor Date do JavaScript não analisa nativamente datas no formato DD/MM/YYYY. Se precisar converter uma string DD/MM/YYYY em um objeto Date válido, reformate-a para YYYY/MM/DD primeiro:
let dateInput = "15/05/2019"; // DD/MM/YYYY formatlet dateArray = dateInput.split("/");
let newDate =
${dateArray[2]}/${dateArray[1]}/${dateArray[0]};
console.log(newDate); // 2019/05/15 (YYYY/MM/DD)
Agora você pode usar newDate com o construtor Date do JavaScript:
let jsDate = new Date(newDate);
console.log(jsDate); // Outputs a valid Date objectComo Verificar se uma String é uma Data Válida em JavaScript
Para confirmar tanto o formato quanto a validade da data, o construtor Date do JavaScript e a função isNaN() são úteis:
function isDateValid(dateStr) { return !isNaN(new Date(dateStr)); }// DD/MM/YYYY (not recognized by Date) console.log(isDateValid("15/05/2019")); // false
// MM/DD/YYYY console.log(isDateValid("05/15/2019")); // true
// YYYY/MM/DD console.log(isDateValid("2019/05/15")); // true
Quando Usar Qual Abordagem?
Validação com regex é ótima para impor um padrão de entrada específico.
Validação com objeto Date é melhor para verificar se a data realmente existe e é reconhecida pelo JavaScript.
Use ambas juntas para validação mais estrita: primeiro verifique o formato com regex, depois confirme a validade com o construtor.
Trocando Posições de Dia e Ano em Strings de Data
Para converter uma string de data de DD/MM/YYYY para YYYY/MM/DD em JavaScript:
let originalDate = "15/05/2019"; // DD/MM/YYYY let parts = originalDate.split("/"); // Rearranged to YYYY/MM/DD let convertedDate =${parts[2]}/${parts[1]}/${parts[0]};
console.log(convertedDate); // Outputs: 2019/05/15
Converter uma Data para o Formato DD/MM/YYYY em JavaScript
Crie um objeto Date a partir de uma string como
"2019/05/15".Verifique se é uma data válida usando
isNaN().Extraia dia, mês e ano garantindo que cada parte tenha dois dígitos.
function formatDateToDDMMYYYY(dateInput) { const dateObj = new Date(dateInput); if (isNaN(dateObj)) return "Invalid date"; // Guard against bad inputlet day = dateObj.getDate(); let month = dateObj.getMonth() + 1; // Months are zero-indexed const year = dateObj.getFullYear();
// Ensure day and month are always two digits day = day < 10 ? "0" + day : day; month = month < 10 ? "0" + month : month;
return
${day}/${month}/${year}; }
// Example usage: console.log(formatDateToDDMMYYYY("2019/05/15")); // "15/05/2019"
Atenção: O método getMonth() retorna meses com base zero, então janeiro é 0 e dezembro é 11. Por isso adicionamos 1 para obter o valor correto.
Validando Datas com isNaN() em JavaScript
Você pode usar isNaN() em conjunto com new Date() para verificar se uma string de data realmente resulta em uma data válida:
function isDateValid(dateStr) {
return !isNaN(new Date(dateStr));
}Exemplos
console.log(isDateValid("15/05/2019")); // false (DD/MM/YYYY isn't recognized natively)
console.log(isDateValid("05/15/2019")); // true (MM/DD/YYYY is valid in JS)
console.log(isDateValid("2019/05/15")); // true (YYYY/MM/DD also valid)Comparando Datas em JavaScript
Para verificar se uma data vem antes ou depois de outra, você pode comparar dois objetos Date diretamente:
const firstDate = new Date('2024-06-01'); const secondDate = new Date('2024-06-05');
console.log(firstDate < secondDate); // true console.log(firstDate > secondDate); // false
O JavaScript converte os objetos Date em valores numéricos (milissegundos desde 1 de janeiro de 1970), então operadores de comparação funcionam diretamente. Para verificar igualdade, use .getTime():
console.log(firstDate.getTime() === secondDate.getTime()); // falseOutros Padrões Úteis:
ISO 8601 (ex.: 2024-06-05T12:30:00Z):
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/Formato MM-DD-YYYY:
/^(0[1-9]|1[0-2])--\d\d$/Por que Ajustar o Mês com getMonth() em JavaScript?
O método getMonth() conta meses a partir de zero: janeiro retorna 0, dezembro retorna 11. Para formatar como MM-DD-YYYY:
const date = new Date();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const year = date.getFullYear();
const formattedDate = ${month}-${day}-${year};O que Acontece com Datas Inválidas no Construtor Date do JavaScript?
Passar uma string de data inválida ao construtor Date do JavaScript não lança um erro - em vez disso, ele cria silenciosamente um objeto Invalid Date:
const dateStr = "2019/15/15"; // Month 15 doesn't exist!
Const parsedDate = new Date(dateStr);
console.log(parsedDate); // Outputs: Invalid DateSempre valide sua entrada antes de passá-la ao construtor Date.
Como Saber se uma Data é no Passado ou no Futuro?
Crie um objeto
Datea partir da sua entrada.Crie outro objeto
Datecom a data e hora atuais.Use os operadores
<ou>para comparar os dois.
const inputDate = new Date('2023-08-20'); // Date you want to check const today = new Date(); // Current date and time
if (inputDate < today) { console.log('The input date is in the past.'); } else { console.log('The input date is in the future.'); }
Casos de Uso Reais
Validação de Formulários: Garanta que usuários insiram datas de nascimento, datas de reserva ou prazos válidos em formulários.
Análise de Logs: Extraia strings de data válidas de logs de servidor usando o JavaScript Regex Tester.
Limpeza de Dados: Use este validador para padronizar formatos de data em ferramentas de processamento de dados baseadas em JavaScript.
Combine com Estas Ferramentas
JavaScript Regex Tester - Construa e depure padrões de data complexos rapidamente
Validador Regex de Email em JavaScript - Valide credenciais do usuário junto com entradas de data
Validador Regex de Endereço IP em JavaScript - Combine com logs de timestamp para dados de rede
Validador Regex de Senha em JavaScript - Use com formulários de criação de conta ou cadastro
Dicas Profissionais
Use
String.prototype.match()ou.test()para verificações rápidas de regex em JavaScript.Sempre valide a lógica de data separadamente (ex.: 30 de fevereiro é inválido mesmo que o regex permita).
Prefira ISO 8601 para APIs e consistência com bancos de dados.
Use grupos não capturadores (como
(?:...)) quando não precisar extrair partes da correspondência.Para melhor performance, compile o regex uma vez e reutilize em suas funções de validação.
Frequently Asked Questions
Regex em JavaScript consegue detectar datas inválidas como 31/02/2023?
Devo usar separadores de barra ou hífen no regex de data?
Posso validar timestamps ISO com regex?
Este regex é reutilizável em sistemas backend como Node.js?
Posso usar esta ferramenta para testar padrões regex de data em outros formatos?
Related Articles



Teste suas APIs hoje!
Escreva em português simples, o Qodex transforma em testes seguros e prontos para execução.



