ваша функция неправильно обработает, например, такую строку:
454542013 __proto__
s='тест границ слов - 454542013 __proto__';
function reduction_words(s,lim){
var t = s.split(/[^а-яё\w]+/);
for(var i=0; i<t.length; i++)
if(t[i].length>lim)
s = s.replace(t[i], t[i].replace(t[i].replace(new RegExp('[а-яё\w]{1,'+lim+'}[^аеёиоуыьъэюяyeuioa]','i'),''),'')+'.');
return s;
}
alert(reduction_words(s,7));