как указано в примере кода fstr, необходимо совпадение со всем появлением regEx_C и необходимо заменить некоторым динамическим значением. и убедитесь, что каждый матч должен иметь уникальное значение.
в этом примере fstr.match(regEX_C) соответствует 4 совпадениям, и мне нужно заменить на 1 динамическое значение для каждого.
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)
return fstr.replace(/var_\w+_C/g, val);
пожалуйста, проверьте jsfiddle.net/ymw4ccaz