| 
		
			Сообщение от javascript_pupil
			
		
	 | 
	| 
		str = str.replace(re, $1); // работает
	 | 
	
Я думаю, что это тоже не работает. Должно быть
str = str.replace(re, '$1');
	
	| 
		
			Сообщение от javascript_pupil
			
		
	 | 
	| 
		str = str.replace(re, slovar[$1]);
	 | 
	
Ну это не работает, т.к. вторым аргументом может быть либо строка, в которой могут быть шаблоны замены, либо функция. А вы передаете свойство объекта, имя  которого задано неопределенной переменной $1
$1 для замены можно использовать только внутри строки.
Но и $1 ничего не даст. это ссылка на первую группу в регулярном выражении. А у вас нет там групп.