Как подсчитать количество вхождений строки (подмножество символов / регулярное выражение / подстановочные знаки) внутри другой строки.
Метод 1 — Использование соответствия регулярного выражения
var emails = '[email protected],[email protected],[email protected]', count = emails.match(/@/igm).length; console.log(count); //output: 3
Слово с предупреждением о том, что использование функции .length в регулярном выражении, у которого нет совпадений, приведет к ошибке NULL .
var emails = '', count = emails.match(/@/igm).length; console.log(count); //output: TypeError: emails.match(/@/gim) is null
Если вы проверили, что счетчик не равен нулю, прежде чем присваивать значение, это не будет ошибкой и даст вам 0 для отсутствия счета.
Рабочая версия (нулевое доказательство):
var emails = '[email protected],[email protected],[email protected]', regex = /@/igm, count = emails.match(regex), count = (count) ? count.length : 0; console.log(count); //output: 3
Способ 2 — Использование функции indexOf () Pos
function occurrences(string, substring){ var n=0; var pos=0; while(true){ pos=string.indexOf(substring,pos); if(pos!=-1){ n++; pos+=substring.length;} else{break;} } return(n); } count= occurrences(emails,'@'); console.log(count); //output: 3
вfunction occurrences(string, substring){ var n=0; var pos=0; while(true){ pos=string.indexOf(substring,pos); if(pos!=-1){ n++; pos+=substring.length;} else{break;} } return(n); } count= occurrences(emails,'@'); console.log(count); //output: 3