棘手的字符串替换为使用Javascript组合的2个字符串

棘手的字符串替换为使用Javascript组合的2个字符串,javascript,regex,string,Javascript,Regex,String,我正在尝试用两个字符串做一些有点棘手的事情,但不知道如何去做。这是一种向后匹配/替换。我想替换字符串中匹配之外的任何内容。棘手的是,我要替换的字符串部分是另一个字符串的部分,这取决于找到匹配项的位置 我需要处理以下变量: var keepMe = '#INDEX_NESTED#'; var stringFind = 'test[#INDEX#][nested][#INDEX_NESTED#][dcap]'; var stringReplace = 'test[0][nested][0][dcap

我正在尝试用两个字符串做一些有点棘手的事情,但不知道如何去做。这是一种向后匹配/替换。我想替换字符串中匹配之外的任何内容。棘手的是,我要替换的字符串部分是另一个字符串的部分,这取决于找到匹配项的位置

我需要处理以下变量:

var keepMe = '#INDEX_NESTED#';
var stringFind = 'test[#INDEX#][nested][#INDEX_NESTED#][dcap]';
var stringReplace = 'test[0][nested][0][dcap]';
目标是获得以下输出:

test[0][nested][#INDEX_NESTED#][dcap]
请假设一切都是动态的,所以没有任何东西可以硬编码


有什么方法可以做到这一点吗?

有几种不同的方法可以做到这一点。一种方法是使用表达式
/(?=\[)/
在每个
[
字符处拆分两个字符串。这只是一个正向前瞻,将在每个
[
字符后面匹配。然后,您可以映射一个新数组,同时通过索引比较每个数组中的元素

var replaceArray = stringReplace.split(/(?=\[)/);
var result = stringFind.split(/(?=\[)/).map(function (value, index) {
  return value.indexOf(keepMe) > -1 ? value : replaceArray[index];
}).join('');
完整示例:

var keepMe='#INDEX#u嵌套#';
var stringFind='test[#INDEX#][nested][#INDEX#u nested#][dcap];
var stringReplace='test[0][nested][0][dcap]';
var replaceArray=stringReplace.split(/(?=\[)/);
var result=stringFind.split(/(?=\[)/).map(函数(值,索引){
返回值.indexOf(keepMe)>-1?值:replaceArray[index];
}).加入(“”);

document.body.textContent=result;
有几种不同的方法可以实现这一点。一种方法是使用表达式
/(?=\[)/
在每个
[
字符处拆分两个字符串。这只是一种积极的前瞻,将在每个
后面匹配[
字符。然后您可以映射一个新数组,同时通过索引比较每个数组中的元素

var replaceArray = stringReplace.split(/(?=\[)/);
var result = stringFind.split(/(?=\[)/).map(function (value, index) {
  return value.indexOf(keepMe) > -1 ? value : replaceArray[index];
}).join('');
完整示例:

var keepMe='#INDEX#u嵌套#';
var stringFind='test[#INDEX#][nested][#INDEX#u nested#][dcap];
var stringReplace='test[0][nested][0][dcap]';
var replaceArray=stringReplace.split(/(?=\[)/);
var result=stringFind.split(/(?=\[)/).map(函数(值,索引){
返回值.indexOf(keepMe)>-1?值:replaceArray[index];
}).加入(“”);

document.body.textContent=result;
简单的方法是
(全部在前面)(要匹配的内容)(全部在后面)
你有三个部分。你能提供一些示例代码如何做到这一点吗?我还是不明白。是的,我只是想有人会有一些聪明的方法来做到这一点,使用带位置的子字符串或类似的东西。我可以退一步,看看我是否可以在核心脚本中做一些不同的事情。谢谢你!简单的方法是
(全部在前面)(要匹配的内容)(全部在后面)
你有三个部分。你能提供一些示例代码如何做到这一点吗?我仍然不明白。是的,我只是想有人会有一些聪明的方法来使用带位置的子字符串或类似的东西。我可能会后退一步,看看我是否可以在核心脚本中做一些不同的事情。谢谢!