HOWTO · TypeScript
Comprobar si una cadena tiene cierto texto en TypeScript
Este tutorial demuestra cómo comprobar si una cadena contiene un texto determinado en TypeScript.
En esta página
Usa includes() para comprobar directamente si una cadena de TypeScript contiene una subcadena; devuelve un valor booleano. Usa indexOf() cuando también necesites la posición de la coincidencia, y search() o RegExp.test() cuando la condición dependa de un patrón de expresión regular. Estos métodos distinguen entre mayúsculas y minúsculas, salvo que normalices el texto explícitamente o uses un patrón que no distinga entre ellas.
Los fragmentos ejecutables usan sintaxis de JavaScript, que también es válida en TypeScript. Puedes copiarlos en un archivo TypeScript sin una configuración específica de transpilación.
Usa includes() para comprobar directamente si aparece una subcadena
Usa includes() cuando necesites una respuesta booleana directa: devuelve true si la cadena buscada contiene la subcadena indicada y false en caso contrario. Para una comprobación sencilla, este resultado booleano y fácil de interpretar suele ser la opción adecuada.
Para obtener una respuesta booleana directa, llama a includes() en la cadena que quieres buscar. El argumento es el texto que quieres encontrar.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
const message = "TypeScript string search";
const query = "string";
const containsQuery = message.includes(query);
console.log(containsQuery);
true
El resultado es true porque la subcadena exacta en minúsculas aparece en message. Por ejemplo, buscar "String" devolvería false; includes() no cambia las mayúsculas ni las minúsculas ni realiza una comparación adaptada al idioma. Si las diferencias entre mayúsculas y minúsculas no deben importar en tus datos, normaliza ambos valores antes de compararlos, como se muestra en la última sección.
Usa indexOf() cuando necesites la posición de la coincidencia
indexOf() busca la primera aparición de una subcadena en la cadena receptora y devuelve su posición, empezando desde cero. Si no encuentra ninguna coincidencia, devuelve -1. Para convertir el resultado en un valor booleano, compáralo explícitamente con -1: comprobar directamente el número en una condición if no detectaría correctamente una coincidencia en la posición 0, porque cero es un valor falsy.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
const message = "TypeScript string search";
const query = "TypeScript";
const position = message.indexOf(query);
const containsQuery = position !== -1;
console.log(position, containsQuery);
0 true
Aquí, el primer carácter está en la posición cero, por lo que la comparación detecta correctamente la coincidencia. Usa la posición si necesitas resaltar o extraer una parte alrededor de la primera aparición; usa includes() si solo necesitas saber si está presente. Ambos métodos comparan texto literal y distinguen entre mayúsculas y minúsculas. Para estos métodos de cadena, una cadena de búsqueda vacía se considera presente; valida la entrada del usuario por separado si una consulta vacía no debe contar como coincidencia.
Usa search() para buscar coincidencias con expresiones regulares
search() devuelve la posición de la primera coincidencia con una expresión regular o -1 si no encuentra ninguna. Al pasar un valor RegExp, el patrón queda explícito, como en el ejemplo siguiente. JavaScript también convierte un argumento de cadena en una expresión regular. Por tanto, una cadena que se pasa a search() sigue siendo sintaxis de patrón: no busca texto literal como hace includes(). Su valor numérico de retorno sigue la misma regla de comparación con -1 que indexOf().
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
const message = "Order 42 is ready";
const position = message.search(/\d+/);
console.log(position);
6
La expresión /\d+/ coincide con uno o más dígitos, y search() devuelve la posición inicial de esa coincidencia. Por ejemplo, si se pasa la cadena "42", esta se convierte en una expresión regular y coincide con esos dígitos como patrón. Si solo necesitas saber si el patrón coincide, RegExp.test() expresa esa intención de forma más directa.
Usa RegExp.test() para comprobar patrones
Llama a test() en una expresión regular para obtener un valor booleano que indique si la entrada coincide con el patrón. Un literal de expresión regular es una opción segura y concisa cuando el patrón forma parte de tu código. Las expresiones regulares pueden representar clases de caracteres, repeticiones y alternativas que una búsqueda de subcadenas literales no puede expresar.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
const message = "TypeScript string search";
const pattern = /TypeScript/;
const matches = pattern.test(message);
console.log(matches);
true
Cuando el patrón procede de una variable, crear un RegExp hace que caracteres como ., * y [ se interpreten como sintaxis de patrón. Si la variable representa texto literal, escapa primero esos caracteres:
const userText = "price (USD)";
const escapedText = userText.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const literalPattern = new RegExp(escapedText);
const found = literalPattern.test("The price (USD) is listed");
console.log(found);
true
Así evitas que los signos de puntuación de userText alteren la búsqueda literal prevista. Evita las marcas g e y si vas a usar test() repetidamente como una simple comprobación booleana: esas marcas hacen que la coincidencia dependa del estado mutable lastIndex de la expresión regular.
Gestiona las mayúsculas y minúsculas y varios términos de búsqueda
includes(), indexOf() y las expresiones regulares distinguen entre mayúsculas y minúsculas, salvo que elijas otra forma de comparación. Para buscar subcadenas sin distinguir entre mayúsculas y minúsculas, normaliza ambas cadenas de la misma manera. toLowerCase() sirve para muchos identificadores de programación y para textos en inglés, pero no sustituye de forma universal a una comparación lingüística adaptada al idioma.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
const message = "TypeScript makes text checks clear";
const query = "TYPESCRIPT";
const containsQuery = message.toLowerCase().includes(query.toLowerCase());
const candidates = ["JavaScript", "TypeScript", "Python"];
const containsCandidate = candidates.some((item) =>
message.includes(item)
);
console.log(containsQuery, containsCandidate);
true true
La primera comprobación ignora las diferencias entre mayúsculas y minúsculas porque normaliza ambos lados. La llamada a some() comprueba si aparece al menos uno de los términos candidatos en el mensaje y se detiene cuando encuentra una coincidencia. Usa every() si deben aparecer todos los términos de la lista. Antes de aplicar estos patrones, decide expresamente si aceptarás términos de búsqueda vacíos, ya que una subcadena vacía coincide con cualquier cadena. Elige includes() para comprobar la presencia de texto literal, indexOf() si importa la posición y search() o RegExp.test() si necesitas comprobar un patrón.