Как я могу использовать строки как 'find' в регулярном выражении JS?

Я.:

var find = ["a", "b", "c"];
var string = "abcdefghijkl";

Теперь я хочу заменить все элементы массива find пустой строкой (" "), используя регулярные выражения. Как я могу это сделать?

Я имею в виду, что использование .replace(/find[i]/g, "") в цикле не сработает.

Итак, как я могу это сделать?

Благодарность!

0
Rohan 5 Июл 2010 в 19:10

3 ответа

Лучший ответ

Вы можете динамически создавать регулярные выражения с помощью встроенного объекта RegExp.

var find = ["a", "b", "c"];
var re = new RegExp( find.join("|"), "g" ); // <- /a|b|c/g
var string = "abcdefghijkl";

string = string.replace(re, "");

alert(string); // <- defghijkl
​
3
gblazex 5 Июл 2010 в 15:13

Если вам нужно запускать выражения по одному (например, если они слишком сложны, чтобы просто объединить их в одно выражение), вы создаете объекты Regexp в цикле следующим образом:

var find = ["a", "b", "c"];
var string = "abcdefghijkl";

for (var i = 0; i < find.length; i++) {
  var re = new Regexp(find[i], "g");
  string = string.replace(re, "");
}
0
Guffa 5 Июл 2010 в 15:31

Почему бы вам не использовать только

.replace(find[i], "*")
0
Salil 5 Июл 2010 в 15:14