Javascript - 正则表达式 - 用不同的字符串替换字符串中的每个其他匹配项

时间:2014-10-18 15:08:44

标签: javascript regex

所以我的代码是这样的:

for (var i = 0; i < str.length; i++) {
    str = str.replace("|", "Math.abs(");
    str = str.replace("|", ")");
}

无论如何使用正则表达式获得相同的效果吗?

或者至少是一个带函数的正则表达式?:

str = str.replace(/?/g, function() {?});

2 个答案:

答案 0 :(得分:2)

您可以使用此单一正则表达式replace方法:

str = str.replace(/\|([^|]+)\|/g, 'Math.abs($1)');

RegEx Demo

答案 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)' ]