Javascript 如何对相同的正则表达式模式xxx进行多个不同的替换,但替换也包含xxx

Javascript 如何对相同的正则表达式模式xxx进行多个不同的替换,但替换也包含xxx,javascript,regex,Javascript,Regex,假设我有 1XXX, 2XXX 我想将XXX分别替换为(备注:它再次包含XXX) 这会给 1AXXX, 2B 我看不出仅仅使用正则表达式是否有可能做到这一点(我是正则表达式的初学者) 您可以捕获XXX前面的字符,并使用该字符决定替换为什么: const original=“1XXX,2XXX”; 常量结果=原始。替换(/(\d)XXX/g,(m,c0)=> `${c0}${c0===“1”?“AXXX”:“B”}` ); 控制台日志(结果)您可以捕获XXX前面的字符,并使用该字符决定替换为

假设我有

1XXX, 2XXX
我想将XXX分别替换为(备注:它再次包含XXX)

这会给

1AXXX, 2B
我看不出仅仅使用正则表达式是否有可能做到这一点(我是正则表达式的初学者)


您可以捕获XXX前面的字符,并使用该字符决定替换为什么:

const original=“1XXX,2XXX”;
常量结果=原始。替换(/(\d)XXX/g,(m,c0)=>
`${c0}${c0===“1”?“AXXX”:“B”}`
);

控制台日志(结果)
您可以捕获XXX前面的字符,并使用该字符决定替换为什么:

const original=“1XXX,2XXX”;
常量结果=原始。替换(/(\d)XXX/g,(m,c0)=>
`${c0}${c0===“1”?“AXXX”:“B”}`
);
控制台日志(结果)
let input=“1XXX,2XXX”;
//然后我们需要对替换文本使用迭代器
let replacements=[“AXXX”,“B”][Symbol.iterator]();
//最后我们称之为替换。
让结果=input.replace(
//带有'g'的RegExp将替换输入中的每个事件
/XXX/g,
//我们使用了一个替换函数
//替换的值。
()=>replacements.next().value
);
document.body.appendChild(document.createTextNode(结果));//=>1AXXX,2B
let input=“1XXX,2XXX”;
//然后我们需要对替换文本使用迭代器
let replacements=[“AXXX”,“B”][Symbol.iterator]();
//最后我们称之为替换。
让结果=input.replace(
//带有'g'的RegExp将替换输入中的每个事件
/XXX/g,
//我们使用了一个替换函数
//替换的值。
()=>replacements.next().value
);

document.body.appendChild(document.createTextNode(结果));//=>1AXXX,2B< <代码> > P>您可以考虑在数组中保持替换的方法,并使用索引来跟踪替换号:

var s='1XXX、2XXX、3XXX、4XXX';
var repl=['AXXX','B'];
var len=repl.length-1;
变量i=-1;//索引计数器
var r=s.replace(/XXX/g,(m)=>repl[i=(i>=len?0:i+1)];
控制台日志(r);

/1= >“1AXXX,2B,3AXXX,4B”< /代码>

您可以考虑在数组中保持替换的方法,并使用索引来跟踪替换号:

var s='1XXX、2XXX、3XXX、4XXX';
var repl=['AXXX','B'];
var len=repl.length-1;
变量i=-1;//索引计数器
var r=s.replace(/XXX/g,(m)=>repl[i=(i>=len?0:i+1)];
控制台日志(r);

//=>“1AXXX,2B,3AXx,4B”
如果是字符串,则可以使用相同的正则表达式。如果是数组,则必须检查每个元素。如果是字符串,则可以使用相同的正则表达式。如果它是一个数组,你必须检查每个元素。谢谢,你的解决方案不取决于词条的数量吗?我的意思是,如果我的词条超过2条怎么办?@user310291-它不取决于项目的数量,不;它取决于匹配的数字<例如,代码>“1XXX,2XXX,1XXX,2XXX,1XXX”
变为
“1AXXX,2B,1AXXX”
。这就是我所说的广义化。谢谢,你的解决方案不取决于术语的数量吗?我的意思是,如果我有两个以上的术语怎么办?@user310291-它不取决于项目的数量,不;它取决于匹配的数字<例如,代码>“1XXX,2XXX,1XXX,2XXX,1XXX”
变为
“1AXXX,2B,1AXXX”
。这就是我所说的如何将其推广的意思。
1AXXX, 2B