正则表达式替换指定字符时如何不替换连续出现的该字符

用正则表达式进行替换,比如"abcaabbcc",要把a替换成X,但是aa保留不替换,该如何写正则呢?

let str='abcaabbccfadwdwdaaadwdwa';
str=str.replace(/(?<=[^a]|^)a(?=[^a]|$)/g,'x');
console.log(str);

值替换一个a的情况,两个a以上不替换

var m = str.match(/^aa^a/);
str.replace(m[0], m[0].replace('a', ''));

正则获取到所有不连续的指定字符是没有问题的,但是结合要提换就不行了吧,这种有被包含的情况我能想到的就是自己用循环来处理,判断前后字符是否等于当前字符,来替换!