¿Cómo comprobar si una cadena contiene texto de una serie de subcadenas en JavaScript?

Resuelto PercivalMcGullicuddy asked hace 13 años • 24 respuestas

Muy claro. En javascript, necesito verificar si una cadena contiene subcadenas contenidas en una matriz.

PercivalMcGullicuddy avatar Apr 07 '11 21:04 PercivalMcGullicuddy
Aceptado

No hay nada integrado que haga eso por usted, tendrá que escribir una función para ello, aunque puede ser solo una devolución de llamada al somemétodo de matriz.

Dos enfoques para usted:

  • somemétodo de matriz
  • Expresión regular

Formaciónsome

El somemétodo de matriz (agregado en ES5) hace que esto sea bastante sencillo:

if (substrings.some(function(v) { return str.indexOf(v) >= 0; })) {
    // There's at least one
}

Aún mejor con una función de flecha y el includesmétodo más nuevo (ambos ES2015+):

if (substrings.some(v => str.includes(v))) {
    // There's at least one
}

Ejemplo en vivo:

Mostrar fragmento de código

Expresión regular

Si sabes que las cadenas no contienen ninguno de los caracteres que son especiales en las expresiones regulares, entonces puedes hacer un poco de trampa, como esta:

if (new RegExp(substrings.join("|")).test(string)) {
    // At least one match
}

...que crea una expresión regular que es una serie de alternancias para las subcadenas que estás buscando (por ejemplo, one|two) y prueba para ver si hay coincidencias para alguna de ellas, pero si alguna de las subcadenas contiene algún carácter que sea especial. en expresiones regulares ( *,, [etc.), primero tendrías que escapar de ellas y es mejor que simplemente hagas el bucle aburrido. Para obtener información sobre cómo escapar de ellos, consulte las respuestas a esta pregunta .

Ejemplo en vivo:

Mostrar fragmento de código

T.J. Crowder avatar Apr 07 '2011 14:04 T.J. Crowder

Solución de una línea

substringsArray.some(substring=>yourBigString.includes(substring))

Devuelve true/falsesi la subcadenaexists/doesn't exist

Necesita soporte ES6

Praveena avatar Sep 21 '2017 06:09 Praveena
var yourstring = 'tasty food'; // the string to check against


var substrings = ['foo','bar'],
    length = substrings.length;
while(length--) {
   if (yourstring.indexOf(substrings[length])!=-1) {
       // one of the substrings is in yourstring
   }
}
raveren avatar Apr 07 '2011 14:04 raveren