替换集合中的单个符号

时间:2015-04-12 07:03:11

标签: javascript regex

JavaScript + Reg-Ex中是否有一种简化的方法可以用替代符号替换集合中每个符号的所有出现位置?

示例:

"Test: 1, 2, 3 and 1".replace("123", "ABC");
// we need to get: "Test: A, B, C and A";

我的意思是,是否有任何Reg-Ex技巧可以避免for循环?无论如何,最有效的方法是什么?

规定:

  1. 在我的任务中,符号集通常很短(甚至可能是3个符号),它是静态的,而不是动态的,非常类似于显示的例子。
  2. 有时,符号需要替换为空的',即删除。

1 个答案:

答案 0 :(得分:4)

您可以使用Object Literal构建替换。

var map = {'1':'A', '2':'B', '3':'C'};
str = str.replace(/[123]/g, function(k) {
    return map[k];
});

或者使用地图为此创建自定义函数:

function _replace(str, map) {
   var re = new RegExp('['+Object.keys(map).join('')+']','g');
   return str.replace(re, function(x) { return map[x] });
}