JavaScript de Cero a Experto / Strings, números y fechas
Regex desde cero: el detector de patrones
"¿Este texto es un celular colombiano válido?" includes no puede
responder eso: no buscas un texto EXACTO, buscas una FORMA ("un 3 seguido de
9 dígitos"). Para describir formas de texto existen las expresiones
regulares (regex). Tienen fama de jeroglífico, pero construidas pieza por
pieza son perfectamente legibles — y hoy las construyes desde cero.
La regla del portero
Las piezas básicas
Léelas como frases: /gasto \d+/ dice "la palabra gasto, un espacio, y una
o más cifras". Cada símbolo es una pieza de Lego; el patrón completo es la
frase armada. Con seis piezas (\d, \w, \s, +, ?, las llaves de
cantidad) cubres la mayoría de lo que necesitarás.
Validar formatos: las anclas
test busca el patrón EN CUALQUIER PARTE del texto. Para validar un
formato completo necesitas anclar: ^ (aquí empieza) y $ (aquí termina).
La regla de bolsillo: ¿validando un campo completo? SIEMPRE ^...$. Sin
anclas solo preguntas "¿aparece por ahí?"; con ellas exiges "el texto ES
exactamente esto, de principio a fin". Las llaves también aceptan rangos:
{3,15} es "entre 3 y 15 veces".
Extraer y limpiar
"$ 18.000".replace(/[^\d]/g, "") es un truco de oro para "Mi Bolsillo":
borra todo lo que no sea dígito y deja el número limpio para Number(). Y
ojo al doble papel del ^: fuera de corchetes ancla el inicio; DENTRO de
corchetes significa "ninguno de estos".
Nota honesta: las regex son un mundo (grupos, lookaheads, banderas
avanzadas...) y esta lección te da el 80% útil: clases, cuantificadores,
anclas y las banderas g e i. Cuando un patrón se te vuelva un
jeroglífico de verdad, pruébalo por piezas en la consola — y jamás intentes
analizar HTML completo con regex: para eso existe el DOM, que llega en el
próximo módulo.
Validas celulares con /3\d{9}/ (sin anclas) y un usuario escribe '573001234567' (con el indicativo 57 pegado). ¿Qué devuelve test y qué debiste escribir?
Mini-reto
En "Mi Bolsillo": valida estos tres datos con test y sus regex ancladas —
un celular (/^3\d{9}$/), un código de recibo tipo REC-12345
(pista: el guion es literal, /^REC-\d{5}$/) y un año de 4 dígitos. Luego
toma el string "Nequi: $ 45.000" y extráele el monto limpio combinando el
replace de "solo dígitos" con Number().
Qué sigue
Módulo casi cerrado: plantillas, métodos de string, números exactos, formateo colombiano, fechas y patrones. El reto final lo junta TODO: vas a generar el recibo mensual de "Mi Bolsillo" — columnas alineadas, plata en formato COP, fecha en español y validación con regex. Como los de verdad.