Вам нужны две замены, потому что одна заменяет либо a
, либо c
, в зависимости от первого вхождения в строке.
var string = "aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc",
result = string
.replace(/a/, '*')
.replace(/c/, '*');
console.log(result);
Подход с единственной заменой и закрытием по хеш-таблице.
var string = "aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc",
result = string.replace(/[ac]/g, (h => c => h[c] ? c : (h[c] = '*'))({}));
console.log(result);