NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
Validador Regex de Data em Javascript

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 format

let 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 object

Como 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

  1. Crie um objeto Date a partir de uma string como "2019/05/15".

  2. Verifique se é uma data válida usando isNaN().

  3. 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 input

let 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()); // false

Outros 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 Date

Sempre valide sua entrada antes de passá-la ao construtor Date.

Como Saber se uma Data é no Passado ou no Futuro?

  1. Crie um objeto Date a partir da sua entrada.

  2. Crie outro objeto Date com a data e hora atuais.

  3. 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

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?

Não, regex verifica apenas o formato. Você precisará combiná-lo com validação lógica de data em JavaScript.

Devo usar separadores de barra ou hífen no regex de data?

Ambos funcionam, use o que você espera nos seus dados ou aceite ambos com [-/].

Posso validar timestamps ISO com regex?

Sim, regex pode verificar a estrutura, mas use Date.parse() ou new Date() para validar timestamps completamente.

Este regex é reutilizável em sistemas backend como Node.js?

Com certeza. Regex funciona da mesma forma no Node.js que no JavaScript baseado em navegador.

Posso usar esta ferramenta para testar padrões regex de data em outros formatos?

Sim, o validador do Qodex suporta qualquer padrão regex personalizado que você queira testar.

Teste suas APIs hoje!

Escreva em português simples, o Qodex transforma em testes seguros e prontos para execução.