Javascript正则表达式 - 用相同数量的另一个字符替换字符序列

ham*_*boy 6 javascript regex replace

我试图在JavaScript中用相同数量的虚拟字符替换字符串的一部分,例如:'== Hello =='with'== ~~~~~ =='.

使用PerlPHP已经回答了这个问题,但我无法在JavaScript中使用它.我一直在尝试这个:

txt=txt.replace(/(==)([^=]+)(==)/g, "$1"+Array("$2".length + 1).join('~')+"$3");
Run Code Online (Sandbox Code Playgroud)

模式匹配工作正常,但替换没有 - 第二部分添加'~~'而不是模式匹配的长度.将"$ 2"放在括号内是行不通的.我该怎么做才能插入正确数量的字符?

And*_*y E 7

使用替换功能:

var txt = "==Hello==";
txt = txt.replace(/(==)([^=]+)(==)/g, function ($0, $1, $2, $3) {
    return $1 + (new Array($2.length + 1).join("~")) + $3;
});

alert(txt);
//-> "==~~~~~=="
Run Code Online (Sandbox Code Playgroud)