猿问

求助!js正则替换高手!

我有一个问题
varstr='aaabbbcccdddaaabbbcccddd'
str.replace(/(aaa|bbb)/g,(_,m)=>m==='aaa'?'bbb':'aaa').replace(/(ccc|ddd)/g,(_,m=>m)==='ccc'?'ddd':'ccc');
这样可以让字符串中的aaa/bbb和ccc/ddd相互替换
但是,我想用键值对的形式来表示要相互替换的内容,比如
arr={
'aaa':'bbb',
'ccc':'ddd'
}
来表示要相互替换的内容而replace里的内容用变量代替,只要增减键值对就能改变要替换的内容。
这个方法该怎么写呢?
UYOU
浏览 371回答 2
2回答

牧羊人nacy

conststr='aaabbbcccdddaaabbbcccddd';constarr={'aaa':'1','ccc':'2','bbb':'3','ddd':'4'};constarrStr=`(${Object.keys(arr).join('|')})`;constd=str.replace(newRegExp(arrStr,'g'),m=>arr[m]);

开满天机

varstr='aaabbbcccdddaaabbbcccddd';varmap={'aaa':'bbb','ccc':'ddd'};varmapx={}vararrReNode=[];varkey,val;for(keyinmap){val=map[key];mapx[key]=val;mapx[val]=key;arrReNode.push(key);//如果有正则特殊字符,自己处理下arrReNode.push(val);//如果有正则特殊字符,自己处理下}varre=newRegExp('('+arrReNode.join('|')+')','g');str.replace(re,function($m1){returnmapx[$m1]});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答