Бих искал да създам метод String.replaceAll()
в JavaScript и мисля, че използването на регекс би било най-краткият начин да го направя. Не мога обаче да разбера как да подам променлива на regex. Вече мога да направя това, което ще замени всички случаи на "B"
с "A"
.
"ABABAB".replace(/B/g, "A");
Но аз искам да направя нещо подобно:
String.prototype.replaceAll = function(replaceThis, withThis) {
this.replace(/replaceThis/g, withThis);
};
Но очевидно това ще замени само текста "replaceThis"
...така че как да предам тази променлива в моя regex низ?
Вместо да използвате синтаксиса /regex/g
, можете да конструирате нов обект RegExp:
var replace = "regex";
var re = new RegExp(replace,"g");
По този начин можете динамично да създавате regex обекти. Тогава ще направите:
"mystring".replace(re, "newstring");
Това:
var txt=new RegExp(pattern,attributes);
е еквивалентно на това:
var txt=/pattern/attributes;
this.replace( new RegExp( replaceThis, 'g' ), withThis );