JavaScript регулярное выражение с использованием строк? - PullRequest
0 голосов
/ 05 июля 2010

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

т.е:.

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

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

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

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

Спасибо!

Ответы [ 3 ]

3 голосов
/ 05 июля 2010

Вы можете динамически создавать регулярные выражения с помощью встроенного объекта 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
​
0 голосов
/ 05 июля 2010

Если вам нужно запускать выражения по одному за раз (например, если они слишком сложны, чтобы просто объединить их в одно выражение), вы создаете объекты 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 голосов
/ 05 июля 2010

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

.replace(find[i], "*")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...