Сегодня понадобилось поработать с текстом на клиенте, а именно нужно было делать замены символа-маски в строке. Пока символ-маска был один, все отлично работало, но когда их стало несколько, заменялось только первое вхождение..
Решением было использовать регулярные выражения, вместо вызова метода replace у строки:
function replaceAll(txt, replace, with_this) { return txt.replace(new RegExp(replace, 'g'),with_this); }
Теперь вместо:
var str = 'hello world, hello world, hello world'; alert(str.replace('world', 'vasya'));
стало
var str = 'hello world, hello world, hello world'; alert(replaceAll(str, 'world', 'vasya'));
Посмотреть в работе можно на JSFiddle