Если кажется, что вы хотите найти совпадение и заменить его первой строкой в массиве, а для следующего совпадения заменить его второй строкой, et c? Вы также должны рассмотреть случай, когда в этом массиве заканчиваются элементы.
В исходном коде вы заменяете все на первое совпадение, а [
и ]
исчезают. Поэтому вам нужно заменить один, а затем go на следующий:
function replacingText() {
var names = ["Ethan", "Kyle", "Chase", "Cole"];
var sentance = 'This is [Cole] and [Chase].'
var regex = /\[(.*?)\]/m;
i = 0;
while (regex.test(sentance) && i < names.length) {
sentance = sentance.replace(regex, names[i]);
i++;
}
console.log(sentance);
}
replacingText();
Ваш оригинальный код тоже работает, если заменить только одно вхождение:
function replacingText() {
var names = ["Ethan", "Kyle", "Chase", "Cole"];
var sentance = 'This is [Cole] and [Chase].'
var regex = /\[(.*?)\]/m;
for (i of names) {
sentance = sentance.replace(regex, i);
}
console.log(sentance);
}
replacingText();
Но обратите внимание: если в массиве содержится 20 или 200 элементов, он будет проходить через массив для каждого элемента, даже если совпадений нет.