Если вы пытаетесь гарантировать, что искомая строка не будет существовать даже после замены, вам необходимо использовать цикл.
Например:
var str = 'test aabcbc';
str = str.replace(/abc/g, '');
Когда закончите, у вас все еще будет 'test abc'!
Самый простой цикл для решения этой проблемы:
var str = 'test aabcbc';
while (str != str.replace(/abc/g, '')){
str.replace(/abc/g, '');
}
Но это запускает замену дважды для каждого цикла. Возможно (рискуя быть отвергнутым), что может быть объединено для немного более эффективной, но менее читаемой формы:
var str = 'test aabcbc';
while (str != (str = str.replace(/abc/g, ''))){}
// alert(str); alerts 'test '!
Это может быть особенно полезно при поиске дублирующихся строк.
Например, если у нас есть «a ,,, b» и мы хотим удалить все повторяющиеся запятые.
[В этом случае можно сделать .replace (/, + / g, ','), но в какой-то момент регулярное выражение становится сложным и достаточно медленным, чтобы выполнять цикл.]