求助!js 正则互相替换的问题

有一个需求,比如有一段字符串str = “aaa,bbb,ccc,aaa,bbb,……”,我想如下操作:将所有aaa替换成bbb,将所有bbb替换成aaa;

一开始用正则连续替换str.replace(/aaa/g,'bbb').replace(/bbb/g,'aaa');结果后面的会覆盖的前面,结果变成了aaa,aaa,ccc,aaa,aaa,……

相关代码

str = "aaa,bbb,ccc,aaa,bbb,……";
str1=str.replace(/aaa/g,'bbb').replace(/bbb/g,'aaa');
console.log(str1);
出来的结果是:aaa,aaa,ccc,aaa,aaa,……

我想让结果变成“bbb,aaa,ccc,bbb,aaa,……”该怎么做?

如果正则做不到,还有其他什么方法吗?
顺便说一下,后面的省略号里面,依然可能有aaa和bbb,依然要让它们相互替换。

阅读 1.8k
2 个回答
'aaa,bbb'.replace(/(aaa|bbb)/g, (_, m) => m === 'aaa' ? 'bbb': 'aaa' );
"aaa,bbb,ccc,aaa,bbb".replace(/aaa/g,'___').replace(/bbb/g,'aaa').replace(/___/g,'bbb')

先用个占位符替换,再替换占位符。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题