如示例代码fstr中给出的,需要匹配regEx_C的所有出现,并需要用一些动态值替换。并确保每个匹配项都具有唯一值。

在此示例中,fstr.match(regEX_C)匹配4个匹配项,我需要为每个匹配项替换一个动态值。




var_Viablecells_C = X
var_IVCC_C = Y
var_Viablecells_C = Z
var_IVCC_C = Z1

分配的值不应与任何人匹配。






var fstr = '(Math.log(var_Viablecells_C-var_Viablecells_P)/(2-1)+ var_IVCC_C + var_Viablecells_C / var_IVCC_C)';
var regEx_C = /var_(\w+)_C/ig;
var c_val = 5.5;

function putExpValForRegExMatch(fstr, regEx, val) {
  var all_match = fstr.match(regEx);
  if (null == all_match) return fstr;
  console.log(all_match);
  for (var i = 0; i < all_match.length; i++) {
    console.log(i);
    console.log(fstr);
    var current_match = regEx.exec(fstr);
    if (current_match == null) return fstr;
    console.log(current_match);
    fstr = replaceRange(fstr, current_match.index, current_match.index + current_match[0].length - 1, '');
    fstr = replaceAt(fstr, current_match.index, val);
    console.log(fstr);
  }
  return fstr;
}

function replaceAt(string, index, replace) {
  return string.substring(0, index) + replace + string.substring(index + 1);
}

function replaceRange(s, start, end, substitute) {
  return s.substring(0, start) + substitute + s.substring(end);
}

console.log(putExpValForRegExMatch(fstr, regEx_C, c_val));

最佳答案

您可以使用string.prototype.replace()

var fstr = '(Math.log(var_Viablecells_C-var_Viablecells_P)/(2-1)+ var_IVCC_C + var_Viablecells_C / var_IVCC_C)';
var regEx_C = /var_(\w+)_C/ig;
var c_val = 5.5;

output = fstr.replace(regEx_C,c_val)

08-08 02:58