用字符串替换字符串中的多个字符会重写字符

时间:2015-08-18 13:22:25

标签: javascript regex string

我有一个变量(在此示例中为Б),我希望将var str = "I!%1$s-I!%2$s TTL!%3$s";替换为数组中的元素(%)。

我稍微谷歌并发现this solution,但我在实施它时遇到了麻烦。我的问题是我想用多个字符替换单个字符,然后继续字符串,但这只是覆盖了字符。我其实不知道为什么。

感谢任何帮助,我的代码如下

var regex = ['aaa', 'bbb', 'ccc'];

1 个答案:

答案 0 :(得分:3)

使用replacement function,就像这样

var str = "I!%1$s-I!%2$s TTL!%3$s";
var regex = ['[123]', '[456]', '[789]'];

console.log(str.replace(/%(\d+)/g, function(match, group1) {
  return regex[parseInt(group1) - 1] + group1;
}));
// I![123]1$s-I![456]2$s TTL![789]3$s

RegEx /%(\d+)/g匹配模式%后跟一个或多个数字的任何内容。它将数字捕获为一组。然后将完全匹配和组传递给函数以获得实际替换。在该函数中,您将组转换为parseInt的数字,并从regex数组返回相应的值。