Verificación de subcadena en JavaScript: 3 formas para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

«¿Esta cadena contiene esa palabra?» — la pregunta que atormenta a todo principiante

\n

Estás escribiendo un script, recibes una respuesta del servidor o simplemente filtras una lista de ciudades. Y de repente te quedas atascado: ¿cómo verificar si una cadena contiene una subcadena específica en JavaScript? Esta pregunta es un verdadero éxito en Stack Overflow, la hacen miles de desarrolladores. Y con razón: las cadenas son la base de cualquier aplicación, y saber buscar subcadenas en ellas rápidamente es una habilidad básica.

\n

En este tutorial, analizaremos tres formas prácticas: desde la más moderna (y la favorita de todos) hasta la clásica con ventajas adicionales. Aprenderás cuándo usar cada método y escribirás código del que no te avergüences en una entrevista.

\n\n

Método n.º 1: includes() — simplicidad y elegancia

\n

Si escribes código en JavaScript moderno (ES6 y superior), entonces includes() es tu mejor amigo. Este método devuelve true o false y se lee como una pregunta común en inglés: «¿La cadena incluye la subcadena?».

\n\n

Sintaxis

\n
string.includes(searchString, position)
\n
    \n
  • searchString — lo que buscamos (obligatorio).
  • \n
  • position — parámetro opcional, desde qué índice comenzar la búsqueda (por defecto 0).
  • \n
\n\n

Ejemplo en acción

\n
const message = "¡Hola, mundo! JavaScript es genial.";\n\nconsole.log(message.includes("JavaScript")); // true\nconsole.log(message.includes("Python"));     // false\nconsole.log(message.includes("mundo", 10));    // false (búsqueda desde el carácter 10)\n
\n

Ten en cuenta: el método distingue entre mayúsculas y minúsculas. "javascript" y "JavaScript" son cadenas diferentes. Si necesitas ignorar mayúsculas/minúsculas, simplemente convierte ambas cadenas a minúsculas:

\n
const text = "Aprendiendo JavaScript";\nconst keyword = "javascript";\n\nconsole.log(text.toLowerCase().includes(keyword.toLowerCase())); // true\n
\n\n

Cuándo usarlo

\n
    \n
  • Validación de formularios (verificar si un email contiene "@").
  • \n
  • Búsqueda en listas (filtrado de productos).
  • \n
  • Cualquier verificación simple de inclusión.
  • \n
\n\n

Método n.º 2: indexOf() — el clásico que nunca muere

\n

Antes de que apareciera includes(), todos usaban indexOf(). No solo dice «sí/no», sino que devuelve el índice de la primera aparición de la subcadena. Si no se encuentra la subcadena, devuelve -1.

\n\n

Sintaxis

\n
string.indexOf(searchValue, fromIndex)
\n\n

Ejemplo

\n
const sentence = "Me encanta JavaScript y Python.";\n\nconsole.log(sentence.indexOf("encanta")); // 3\nconsole.log(sentence.indexOf("Ruby"));  // -1\n\n// Verificación de inclusión\nif (sentence.indexOf("JavaScript") !== -1) {\n    console.log("¡Sí, la cadena contiene JavaScript!");\n}\n
\n\n

Detalle importante: ¿por qué no !== -1?

\n

Muchos principiantes escriben if (str.indexOf("word")) — y eso es un error. Si la subcadena está al principio (índice 0), la condición if (0) se evalúa como false. Siempre compara con -1.

\n\n

Cuándo usar indexOf() en lugar de includes()

\n
    \n
  • Cuando necesitas el índice de inicio de la subcadena (por ejemplo, para extraer parte de la cadena).
  • \n
  • Trabajar con código antiguo (IE y versiones antiguas de navegadores).
  • \n
  • Cuando necesitas encontrar todas las apariciones (en un bucle cambiando fromIndex).
  • \n
\n\n

Método n.º 3: search() y RegExp — cuando necesitas flexibilidad

\n

¿Y si necesitas encontrar no solo una palabra, sino un patrón? Por ejemplo, «todas las palabras que comienzan con "JS"» o «un número de teléfono en formato +7-xxx-xxx-xx-xx». Aquí es donde entran en juego las expresiones regulares y el método search().

\n\n

Sintaxis

\n
string.search(regexp)
\n

Blogs

Book Recommendations