Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在两个长度相同的字符串之间替换字符串_Javascript_Regex - Fatal编程技术网

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运行,您能告诉我代码吗?