Для тех, кто найдет этот поток в будущем, обратите внимание, что принятый ответ не всегда возвращает правильное значение, если вы его обобщите, так как он будет задыхаться от операторов регулярных выражений, таких как $
и .
. Вот лучшая версия, которая может обрабатывать любую иглу :
function occurrences (haystack, needle) {
var _needle = needle
.replace(/\[/g, '\\[')
.replace(/\]/g, '\\]')
return (
haystack.match(new RegExp('[' + _needle + ']', 'g')) || []
).length
}