$a = 'how are you'; if (strpos($a,'are') !== false) { echo 'true'; }En PHP, podemos usar el código anterior para verificar si una cadena contiene palabras específicas, pero ¿cómo puedo hacer la misma función en JavaScript/jQuery?
puedes usar indexOf para esto
var a = 'how are you'; if (a.indexOf('are') > -1) { return true; } else { return false; } Editar : esta es una respuesta antigua que sigue obteniendo votos de vez en cuando, así que pensé que debería aclarar que en el código anterior, la cláusula if no es necesaria en absoluto porque la expresión en sí es booleana. Aquí hay una mejor versión que deberías usar,
var a = 'how are you'; return a.indexOf('are') > -1;Actualización en ECMAScript2016:
var a = 'how are you'; return a.includes('are'); //trueindexOf / includes no debe usarse para encontrar palabras completas:Una palabra (en la cultura occidental) es un dibujo de símbolos cerca uno del otro, con algo de espacio entre cada palabra. Una palabra se considera como tal si es una pieza completa de caracteres unidos y no una parte parcial de ella:
"has a word".indexOf('wor') // 6 ("wor" is not a word in this sentence) "has a word".includes('ha') // true ("ha" is not a word in this sentence)Encuentre una palabra completa real , no solo si las letras de esa palabra están en algún lugar de la cadena.
const wordInString = (s, word) => new RegExp('\\b' + word + '\\b', 'i').test(s); // tests [ '', // true ' ', // true 'did', // true 'id', // flase 'yo ', // flase 'you', // true 'you not' // true ].forEach(q => console.log( wordInString('dID You, or did you NOt, gEt WHy?', q) )) console.log( wordInString('did you, or did you not, get why?', 'you') // true ) var stringHasAll = (s, query) => // convert the query to array of "words" & checks EVERY item is contained in the string query.split(' ').every(q => new RegExp('\\b' + q + '\\b', 'i').test(s)); // tests [ '', // true ' ', // true 'aa', // true 'aa ', // true ' aa', // true 'd b', // false 'aaa', // false 'a b', // false 'aaaaa ', // false ].forEach(q => console.log( stringHasAll('aA bB cC dD', q) ))Si está buscando palabras exactas y no quiere que coincida con cosas como "pesadilla" (que es probablemente lo que necesita), puede usar una expresión regular:
/\bare\b/gi \b = word boundary g = global i = case insensitive (if needed) Si solo desea encontrar los caracteres "son", use indexOf .
Si desea hacer coincidir palabras arbitrarias, debe construir programáticamente un objeto RegExp (expresión regular) basado en la cadena de palabras y usar test .