MrBoriska,
function gen(str, len, repeat,tabu)
{ var obj_tabu = {};
for (var i=0; i<tabu.length; i++) {obj_tabu[tabu[i]]=!0};//сформировали обьект из запретных слов
str = str.replace(/<[^>]*>/g, ' ');//выкусили теги
str = str.replace(/[^a-zа-яё\s]/gi, ' '); //убрали небуквы
str = str.split(/\s+/) ;//сформировали массив слов из строки
var obj_output = {};
for (var i=0; i<str.length; i++) {
var word = str[i];
if(word.length >= len && !obj_tabu[word]) obj_output[word]=(obj_output[word]||0)+1;
} // сформировали обьект из разрешённых слов и нужной длины
var output = [];
for(var word in obj_output) if (obj_output[word] >= repeat) output.push(word);//отобрали слова с нужным повторением
return output
}
var str = 'На выходе должна быть строка, состоящая из слов перечисленных через запятую..'+
'На входе должно быть три переменные: '+
'1. Строка, состоящая из набора слов, символов, пробелов и даже html тегов. '+
'2. Число, которое означает минимальное количество символов в слове. '+
'3. Число, означающее минимальное количество повторений слова в тексте. '+
'4. Слова, перечисленные через запятую, которые не следует учитывать при выводе результата.'
alert(gen(str, 3, 2,['Число','слов']) )