NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
Validador Regex de Fechas en JavaScript

Validador Regex de Fechas en JavaScript

Pruebe y valide fácilmente formatos de fecha como DD/MM/YYYY, MM-DD-YYYY o marcas de tiempo ISO 8601 con el Validador Regex de Fechas en JavaScript. Ya sea que esté construyendo formularios, analizando logs o limpiando datos en JavaScript, esta herramienta le ayuda a garantizar fechas precisas y correctamente formateadas. Combine esta herramienta con el Tester Regex de JavaScript para experimentar con patrones, o combínela con el Validador Regex de Email en JavaScript y el Validador Regex de Direcciones IP en JavaScript para validar datos de usuario completos.

Validador Regex de Fechas en JavaScript - Documentación

¿Qué es un Regex de Fechas?

En JavaScript, una expresión regular (regex) para fechas ayuda a identificar y validar si una cadena coincide con un formato de fecha específico. Ya sea que esté construyendo formularios, filtros de datos o logs, validar fechas garantiza que los usuarios ingresen datos correctamente y previene errores posteriores.

Un regex de fechas puede coincidir con patrones como:

  • DD/MM/YYYY

  • MM-DD-YYYY

  • YYYY-MM-DD

  • Marcas de tiempo ISO 8601 como 2023-06-05T12:30:00Z

Patrón Regex en JavaScript para Validación de Fechas

Un regex comúnmente usado para la validación básica DD/MM/YYYY:

/^(0[1-9]|[12][0-9]|3[01])[\/\-](0[1-9]|1[0-2])[\/\-](19|20)\d\d$/

Desglose:

  • ^(0[1-9]|[12][0-9]|3[01]): Valida el día (01-31)

  • [\/\-]: Coincide con / o - como separador

  • (0[1-9]|1[0-2]): Valida el mes (01-12)

  • (19|20)\d\d$: Valida el año (1900-2099)

Cómo Validar una Fecha con Regex en JavaScript

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

Si necesita convertir una cadena DD/MM/YYYY en un objeto Date de JavaScript, primero reformatéela a YYYY/MM/DD:

let dateInput = "15/05/2019"; // formato DD/MM/YYYY

let dateArray = dateInput.split("/");

let newDate = ${dateArray[2]}/${dateArray[1]}/${dateArray[0]};

console.log(newDate); // 2019/05/15 (YYYY/MM/DD)

Ahora puede usar newDate con el constructor Date de JavaScript:

let jsDate = new Date(newDate);
console.log(jsDate); // Genera un objeto Date válido

Cómo Verificar si una Cadena es una Fecha Válida en JavaScript

function isDateValid(dateStr) {
return !isNaN(new Date(dateStr));
}

// DD/MM/YYYY (no reconocido por 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

Tenga en cuenta que el constructor Date entiende formatos como MM/DD/YYYY y YYYY/MM/DD, pero no DD/MM/YYYY. Si la cadena no representa una fecha real, devolverá un objeto "Invalid Date" que isNaN() detectará.

¿Cuándo usar cada enfoque?

  • Validación con regex: ideal para imponer un patrón de entrada específico.

  • Validación con objeto Date: mejor para verificar si la fecha realmente existe y es reconocida por JavaScript.

Convertir Posiciones de Día y Año en Cadenas de Fecha

Para convertir de DD/MM/YYYY a YYYY/MM/DD en JavaScript:

let originalDate = "15/05/2019"; // DD/MM/YYYY
let parts = originalDate.split("/");
// Reorganizado a YYYY/MM/DD
let convertedDate = ${parts[2]}/${parts[1]}/${parts[0]};

console.log(convertedDate); // Resultado: 2019/05/15

Convertir una Fecha al Formato DD/MM/YYYY en JavaScript

function formatDateToDDMMYYYY(dateInput) {
const dateObj = new Date(dateInput);
if (isNaN(dateObj)) return "Fecha inválida";

let day = dateObj.getDate(); let month = dateObj.getMonth() + 1; // Los meses comienzan en cero const year = dateObj.getFullYear();

day = day < 10 ? "0" + day : day; month = month < 10 ? "0" + month : month;

return ${day}/${month}/${year}; }

console.log(formatDateToDDMMYYYY("2019/05/15")); // "15/05/2019"

Nota: El método getMonth() retorna los meses en base cero, por lo que enero es 0 y diciembre es 11. Por eso se debe agregar 1 para obtener el valor correcto.

Validación de Fechas con isNaN() en JavaScript

Puede usar isNaN() junto con new Date() para verificar si una cadena de fecha resulta en una fecha válida:

function isDateValid(dateStr) {
return !isNaN(new Date(dateStr));
}
console.log(isDateValid("15/05/2019")); // false (DD/MM/YYYY no es reconocido nativamente)
console.log(isDateValid("05/15/2019")); // true (MM/DD/YYYY es válido en JS)
console.log(isDateValid("2019/05/15")); // true (YYYY/MM/DD también es válido)

Comparación de Fechas en JavaScript

Para verificar si una fecha es anterior o posterior a otra en JavaScript:

const firstDate = new Date('2024-06-01');
const secondDate = new Date('2024-06-05');

console.log(firstDate < secondDate); // true console.log(firstDate > secondDate); // false

Para comprobar la igualdad, use el método .getTime():

console.log(firstDate.getTime() === secondDate.getTime()); // false

Otros Patrones Útiles:

ISO 8601 (ej. 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 Qué Ajustar el Mes con getMonth() en JavaScript?

Recuerde que getMonth() cuenta los meses desde cero. Si desea mostrar el rango habitual de 1 a 12, debe agregar 1. Ejemplo para formatear una fecha 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};

Cómo Determinar si una Fecha es Pasada o Futura en JavaScript

const inputDate = new Date('2023-08-20');
const today = new Date();

if (inputDate < today) { console.log('La fecha ingresada está en el pasado.'); } else { console.log('La fecha ingresada está en el futuro.'); }

Casos de Uso Reales

  • Validación de Formularios: Garantice que los usuarios ingresen fechas de nacimiento, reservas o plazos válidos.

  • Análisis de Logs: Extraiga cadenas de fecha válidas de logs de servidor con el Tester Regex de JavaScript.

  • Limpieza de Datos: Use este validador para depurar y estandarizar formatos de fecha en herramientas de procesamiento de datos.

Combínelo con Estas Herramientas

Consejos Profesionales

  • Use String.prototype.match() o .test() para comprobaciones rápidas de regex en JavaScript.

  • Valide siempre la lógica de fecha por separado (por ejemplo, el 30 de febrero es inválido aunque el regex lo permita).

  • Use ISO 8601 para APIs y coherencia con bases de datos.

  • Use grupos sin captura (como (?:...)) cuando no necesite extraer partes de la coincidencia.

  • Por rendimiento, compile el regex una sola vez y reutilícelo en sus funciones de validación.

Frequently Asked Questions

¿El regex de JavaScript puede detectar fechas inválidas como 31/02/2023?

No, el regex solo verifica el formato. Deberá combinar con validación lógica de fechas en JavaScript.

¿Debo usar barras o guiones como separadores en el regex de fechas?

Ambos funcionan. Simplemente use el que espere en sus datos o acepte ambos con [-/].

¿Puedo validar marcas de tiempo ISO con regex?

Sí, el regex puede verificar la estructura, pero use Date.parse() o new Date() para validar completamente las marcas de tiempo.

¿Este regex es reutilizable en sistemas backend como Node.js?

Por supuesto. El regex funciona igual en Node.js que en JavaScript del navegador.

¿Puedo usar esta herramienta para probar patrones de fecha en otros formatos?

Sí, el validador de Qodex admite cualquier patrón de regex personalizado que desee probar.

¡Pruebe sus APIs hoy!

Escriba en español claro, Qodex lo convierte en pruebas seguras y listas para ejecutar.