Compter le nombre d'occurrences d'une sous-chaine dans une autre

Comment puis-je compter le nombre de fois qu’une chaîne de caractères donnée apparaît dans une autre chaîne de caractères. Par exemple, voici ce que j’essaie de faire en Javascript :

var str = "Ceci est une chaîne de caractères";
alert(str.count("es"));  // doit afficher '2'

Le g dans l’expression régulière (abréviation de global) /es/g indique qu’il faut rechercher la totalité de la chaîne plutôt que la première occurrence. Cette expression correspond à es deux fois :

var str = "Ceci est une chaîne de caractères";
var count = (str.match(/es/g) || []).length;
console.log(count); // cela afficher '2'

Note: Si vous souhaitez effectuer une recherche avec des caractères spéciaux, vous devez les échapper. Par exemple : pour savoir combien il y a de ‹ . ›, il suffit d’utiliser (str.match(/\./g) || []).length;

function nbrOccurences(string, word) {
   return string.split(word).length - 1;
}
console.log(nbrOccurences("Ceci est une chaîne de caractères", "es"))

Sortie:

2

Vous pouvez essayer cette solution :

var str = "Ceci est une chaîne de caractères";
console.log(str.split("es").length - 1);

La version non regex :

var str = 'Ceci est une chaîne de caractères',
    s = 'es',
    count = 0,
    pos = str.indexOf(s);

while (pos > -1) {
    ++count;
    pos = str.indexOf(s, ++pos);
}

console.log(count);   // 2