Замена всех вхождений подстроки

Ничего лучше, чем преобразование подстроки в регулярку с флагом g, не нашел (может вы подскажите). Идея заключается в том, чтобы экранировать все служебные символы регулярок перед проведением замены.
function replace_string_occurances (src_string, string_to_replace, replace_rule) {
	var escaped_string,
		reg;

	escaped_string = string_to_replace.replace(/[\(\)\[\]\\\.\^\$\|\?\+]/g, '\\$&');
	reg = new RegExp(escaped_string, 'g');
	return src_string.replace(reg, replace_rule);
}

Если же служебные символы не экранировать, то [.] превращается в корректное регулярное выражение. А так, код ниже отработает корректно:
replace_string_occurances('[.]_[.]', '[.]', '[*]'); // [*]_[*]
Share
Send
Popular