Como contar a ocorrência de cordel em cordel?

Como posso contar o número de vezes que uma determinada cadeia ocorre em outra cadeia. Por exemplo, isto é o que estou a tentar fazer em Javascript:

var temp = "This is a string.";
alert(temp.count("is")); //should output '2'
Solução

O g na expressão regular (abreviação de global) diz para procurar a corda inteira ao invés de apenas encontrar a primeira ocorrência. Isto corresponde ao é duas vezes:

var temp = " Isto é um string.";
var count = (temp.match(/is/g) || []).length;
console.log(count);

E, se não houver fósforos, ele retorna 0:

var temp = "Olá Mundo!";
var count = (temp.match(/is/g) || []).length;
console.log(count);
Comentários (17)
function countInstances(string, word) {
   return string.split(word).length - 1;
}
Comentários (10)

Você pode utilizar match para definir tal função:

String.prototype.count = function(search) {
    var m = this.match(new RegExp(search.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "g"));
    return m ? m.length:0;
}
Comentários (2)