如示例代码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)