7. Métodos de String: str.search(), str.match() y str.split()
Cómo interactúan los métodos del prototipo String con expresiones regulares: búsqueda posicional, coincidencias y división inteligente.
Métodos Nativos en String.prototype
Aunque las expresiones regulares son instancias de RegExp, la mayor parte del código cotidiano en frontend y Node.js utiliza los métodos delegados del prototipo String.
str.search(regex): Busca la primera coincidencia y devuelve su posición numérica (índice base 0). Si no existe coincidencia, devuelve-1. No admite la bandera/g.str.match(regex): Su comportamiento cambia drásticamente dependiendo de si tiene o no la bandera/g:- Sin bandera
/g: Devuelve un array enriquecido idéntico aregex.exec(str)con los grupos de captura en los índices numéricos, la propiedad.indexy el objeto.groups. - Con bandera
/g: Devuelve un array plano con todas las coincidencias encontradas, pero descarta todos los grupos de captura e índices.
- Sin bandera
str.split(regex): Divide la cadena en un array utilizando una expresión regular como separador dinámico. Si el delimitador incluye paréntesis de captura/(separador)/, los propios separadores también se conservan en el array resultante.
⚡ Uso Práctico de search(), match() y split()
Aprende a localizar posiciones con search(), extraer datos con match() (viendo la diferencia con y sin /g) y dividir listas complejas con split().
const registro = "Servidor OVH-01 [OK] IP: 192.168.1.50 Timestamp: 2026-11-09";
// 1. str.search(regex)
console.log("--- 1. Búsqueda posicional con str.search() ---");
const posicionIp = registro.search(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/);
console.log("La dirección IP comienza en el índice:", posicionIp);
// 2. str.match(regex) SIN bandera /g (Conserva grupos y metadatos)
console.log("\n--- 2. str.match() SIN /g ---");
const regexSinG = /Timestamp:\s*(\d{4})-(\d{2})-(\d{2})/;
const matchDetallado = registro.match(regexSinG);
console.log("Coincidencia completa:", matchDetallado[0]);
console.log("Año capturado [1]: ", matchDetallado[1]);
console.log("Mes capturado [2]: ", matchDetallado[2]);
console.log("Día capturado [3]: ", matchDetallado[3]);
console.log("Índice de inicio: ", matchDetallado.index);
// 3. str.match(regex) CON bandera /g (Array plano de todas las apariciones)
console.log("\n--- 3. str.match() CON /g ---");
const textoNumeros = "Precios: $120, $350, $89 y $1500 USD";
const todosPrecios = textoNumeros.match(/\$\d+/g);
console.log("Todos los precios extraídos:", todosPrecios);
// 4. str.split(regex) con múltiples delimitadores (comas, punto y coma, espacios)
console.log("\n--- 4. División de cadenas con str.split() ---");
const entradaTags = "javascript, php; react node.js,python";
const tagsLimpios = entradaTags.split(/\s*[,; ]\s*/).filter(Boolean);
console.log("Tags normalizados:", tagsLimpios);
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección¿Qué ocurre con los grupos de captura cuando ejecutas "año: 2026".match(/(\d{4})/g)?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Regex en JavaScript: Expresiones Regulares & RegExp y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.