Мой вариант
var str = 'привет мир! Бесперспективный: тест границ слов - кириллица, 454542013 __proto__ тепло-централь, Производительность/ректификация, л/час.' ;
function crop(str, lim) {
str = str.replace(new RegExp("[а-яёa-z]{"+lim+"}[а-яёa-z]*", "ig"), function(a) {
if(a.length==lim||a.length==lim+1) return a ;
for(var i=lim-1; i>=0; i--) {
var r = new RegExp("^[а-яёa-z]{"+i+"}[^аеёиоуыьъэюяyeuioa]", "i") ;
if(r.test(a)) {
a = a.substring(0, i+1)+"." ;
break ;
} ;
} ;
return a ;
}) ;
return str ;
} ;
alert(crop(str, 7)) ;