web-dev-qa-db-fra.com

JavaScript/jQuery - Comment vérifier si une chaîne contient des mots spécifiques

$a = 'how are you';
if (strpos($a,'are') !== false) {
    echo 'true';
}

En PHP, nous pouvons utiliser le code ci-dessus pour vérifier si une chaîne contient des mots spécifiques, mais comment puis-je effectuer la même fonction dans JavaScript/jQuery?

16
Charles Yeung

Si vous cherchez des mots exacts et que vous ne voulez pas que cela corresponde à "cauchemar" (ce qui est probablement ce dont vous avez besoin), vous pouvez utiliser une expression régulière:

/\bare\b/gi

\b = Word boundary
g = global
i = case insensitive (if needed)

Si vous voulez juste trouver les caractères "sont", utilisez indexOf.

Si vous souhaitez faire correspondre des mots arbitraires, vous devez créer par programme un objet RegExp (expression régulière) lui-même basé sur la chaîne Word et utiliser test.

21
Stephen Chung

vous pouvez utiliser indexOf pour cela

var a = 'how are you';
if (a.indexOf('are') > -1) {
  return true;
} else {
  return false;
}

Edit : Ceci est une vieille réponse qui ne cesse de lever des votes de temps en temps, alors j’ai pensé que je devrais préciser que dans le code ci-dessus, la clause if n’est pas obligatoire du tout parce que l’expression est un booléen. Voici une meilleure version de celle-ci que vous devriez utiliser,

var a = 'how are you';
return a.indexOf('are') > -1;

Mise à jour dans ECMAScript2016:

var a = 'how are you';
return a.includes('are');  //true
46
naiquevin

indexOf ne doit pas être utilisé pour cela.

CORRECTfonction:

function wordInString(s, Word){
  return new RegExp( '\\b' + Word + '\\b', 'i').test(s);
}

wordInString('did you, or did you not, get why?', 'you')  // true

Cela trouvera un mot, un vrai mot, pas seulement si les lettres de ce mot sont quelque part dans la chaîne.

23
vsync

Vous recherchez la fonction indexOf:

if (str.indexOf("are") >= 0){//Do stuff}
7
evbailey

Vous voudrez peut-être utiliser include method dans JS.

var sentence = "This is my line";
console.log(sentence.includes("my"));
//returns true if substring is present.

PS: includes est sensible à la casse.

2
NEelansh VErma

Cette volonté

/\bword\b/.test("Thisword is not valid");

return false, quand celui-ci

/\bword\b/.test("This Word is valid");

retournera true.

2
Jahid

var str1 = "STACKOVERFLOW";
var str2 = "OVER";
if(str1.indexOf(str2) != -1){
    console.log(str2 + " found");
}

1
pgksunilkumar

Un moyen facile de le faire pour utiliser la méthode Regex match (): - 

Par exemple 

var str ="Hi, Its stacks over flow and stackoverflow Rocks."

// It will check Word from beginning to the end of the string

if(str.match(/(^|\W)stack($|\W)/)) {

        alert('Word Match');
}else {

        alert('Word not found');
}

Vérifiez le violon

REMARQUE: pour ajouter la sensibilité à la casse, mettez à jour l'expression rationnelle avec /(^|\W)stack($|\W)/i

Merci 

0
Akshay kumar