Вот вспомогательная функция, которая является частью моей библиотеки, которую я добавляю в каждый фрагмент кода, который я пишу. Не стесняйтесь использовать его так, как вам нравится.
String.prototype.replaceAll = function (stringFind, stringReplace) {
var ex = new RegExp(stringFind.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g");
return this.replace(ex, stringReplace);
};
Он добавляет replaceAll
функцию ко всем строкам, так что вам не придется постоянно использовать регулярные выражения на протяжении всего кода.
Вы можете использовать его как этот
str.replaceAll("$", "€");
Вот пример:
String.prototype.replaceAll = function (stringFind, stringReplace) {
var ex = new RegExp(stringFind.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g");
return this.replace(ex, stringReplace);
};
var str = "Win $50 and Get $100";
document.body.innerHTML = str.replaceAll("$", "€");
ED IT Тестовые случаев на комментарий ниже:
String.prototype.replaceAll = function (stringFind, stringReplace) {
var ex = new RegExp(stringFind.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g");
return this.replace(ex, stringReplace);
};
var str = "test test abc test abc $%& test $%& $%&. test. abc $%& . .";
document.body.innerHTML = str + "<br />";
document.body.innerHTML += str.replaceAll(".", "") + "<br />";
document.body.innerHTML += str.replaceAll("%&", "") + "<br />";
document.body.innerHTML += str.replaceAll("test", "") + "<br />";
document.body.innerHTML += str.replaceAll("a-z", "") + "<br />";
Update
Per комментарии от Данило ниже (! Спасибо), исходная функция не позволит некоторые специальные символы, и будет ошибочным, если текстовый диапазон был введен в функцию replaceAll()
. В моем собственном коде я пока не сталкивался с этими случаями.
Per this answer, я обновил свою функцию, чтобы она теперь ускользнула от RegEx, чтобы быть более эффективной в сценариях с предоставленными сценариями.
Спасибо, что работает – user4571629
Я ответил то же самое на 2 минуты раньше. –