所以我的代码是这样的:
for (var i = 0; i < str.length; i++) {
str = str.replace("|", "Math.abs(");
str = str.replace("|", ")");
}
无论如何使用正则表达式获得相同的效果吗?
或者至少是一个带函数的正则表达式?:
str = str.replace(/?/g, function() {?});
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以匹配|
之间的字符串,然后将其替换为您想要的任何字符串
str[i] = str[i].replace(/\|(.*?)\|/g, "Math.abs($1)");
例如,
var str = ["|1|", "|-2|+|22 * -3|"];
for (var i = 0; i < str.length; i++) {
str[i] = str[i].replace(/\|(.*?)\|/g, "Math.abs($1)");
}
console.log(str);
# [ 'Math.abs(1)', 'Math.abs(-2)+Math.abs(22 * -3)' ]