Datos y texto · Media · 20 min

Extrae fechas ISO y fechas en español

Antes de dárselo a un modelo, saca las fechas de un texto con una expresión regular y descarta las que no existen.

Escribe extractDates(text). Devuelve un array con las fechas del texto en formato ISO YYYY-MM-DD, en el orden en que aparecen. Reconoce dos formas:

- ISO: 2026-09-28; - en español: 4 de octubre de 2026, sin distinguir mayúsculas (1 de Diciembre de 2026). El día puede tener una o dos cifras; en la salida va siempre con dos (2026-10-04).

Descarta las fechas imposibles, como 2026-02-31 o 29 de febrero de 2025 (2025 no es bisiesto). TEXT ya contiene un ejemplo.

Retos 0/5

  • Saca las tres fechas válidas del ejemplo, en orden
  • Convierte fechas en español con el día a dos cifras
  • Descarta fechas imposibles
  • Acepta el 29 de febrero en un año bisiesto
  • Un texto sin fechas devuelve un array vacío

function extractDates(text) {
  const out = [];
  // 1. una regex con dos alternativas: YYYY-MM-DD y "D de mes de YYYY" (flags gi)
  // 2. convierte cada coincidencia en año, mes y día
  // 3. quédate con ella solo si es una fecha real, con formato YYYY-MM-DD
  for (const m of text.matchAll(/(\d{4})-(\d{2})-(\d{2})/g)) out.push(m[0]);
  return out;
}

console.log(extractDates(TEXT));
La consola aparece aquí (console.log).

Para profundizar: la referencia de MDN →

¿Esto en producción, con tus datos? Hablemos 15 minutos →