Javascript 如何在两个长度相同的字符串之间替换字符串
我有这样一个输入字符串:Javascript 如何在两个长度相同的字符串之间替换字符串,javascript,regex,Javascript,Regex,我有这样一个输入字符串: ABCDEFG[HIJKLMN]OPQRSTUVWXYZ 如何将[]之间的字符串中的每个字符替换为X(结果是X的数量与原来的字符数量相同) 例如,对于上面的输入,我希望输出: ABCDEFG[XXXXXXX]OPQRSTUVWXYZ 我正在使用JavaScript的正则表达式来实现这一点,我更希望答案能够是一个使用JavaScript的正则表达式替换函数来实现的实现 我是RegEx新手,因此请解释您的工作,并(如果可能)将文章链接到我可以获得进一步帮助的地方。使
ABCDEFG[HIJKLMN]OPQRSTUVWXYZ
如何将[]
之间的字符串中的每个字符替换为X
(结果是X
的数量与原来的字符数量相同)
例如,对于上面的输入,我希望输出:
ABCDEFG[XXXXXXX]OPQRSTUVWXYZ
我正在使用JavaScript的正则表达式来实现这一点,我更希望答案能够是一个使用JavaScript的正则表达式替换函数来实现的实现
我是RegEx新手,因此请解释您的工作,并(如果可能)将文章链接到我可以获得进一步帮助的地方。使用并将匹配项传递给a,然后
数组(m.length)。加入(“X”)
以生成所需的X:
var str=“ABCDEFG[HIJKLMN]opqrstuvxyz”
str=str.replace(/\[[A-Z]*\]/g,(m)=>“[”+数组(m.length-1)。连接(“X”)+“]”)
console.log(str)代码>
const str=“ABCDEFG[HIJKLMN]opqrstuvxyz”;
const run=str=>str.replace(/\[.]/,(a,b,c)=>c=a.replace(/[^\[\]]/g,x=>x=“x”);
console.log(run(str))代码>您可以使用以下解决方案替换两个方括号之间的字符串:
const rxp = /\[.*?\]/g;
"ABCDEFG[HIJKLMN]OPQRSTUVWXYZ".replace(rxp, (x) => {
return x.replace(rxp, "X".repeat(x.length)-2);
});
我们可以观察到,您希望匹配的每个字母后面都有一系列零个或更多的非“[”字符,直到找到“]”。这很容易用JavaScript友好的正则表达式表示:
/[A-Z](?=[^\[]*\])/g
(?=)
是一个“积极的前瞻性断言”;它在不使用字符的情况下,在当前匹配点之前窥视,以验证其内容是否匹配。在本例中,“[^[]*]”与我上面描述的完全匹配
现在,您可以将每个[A-Z]替换为单个“X”。使用最新的ECMAScript 2018,您可以轻松做到这一点。如果您需要针对其他环境,这也很容易,但需要一些代码。我将使用javascript运行,您能告诉我代码吗?