Мне нужно подсчитать количество символов из списка (var. "Pattern") в каждой строке (элементе) массива. Я хочу сделать его более универсальным, установив шаблон в переменной. Но, когда я пытаюсь сделать это с помощью объекта RegExp, он не работает.javascript regex object vs inline regex
Я не могу понять разницу в двух частях кода:
Этот вариант не работает.
var pattern = "@#%";
var arr = ['[email protected]','D#nse Cr%wd','Cr#m#n#l [email protected][email protected]@nd'];
for(var i=0; i < arr.length; i++){
l = '/[^'+pattern+']/';
g = new RegExp(l,"gi");
console.log(arr[i].replace(g,"").length);
}
Результат будет:
4
11
18
Тот же вариант, но без объекта RegExp, работает отлично:
var arr = ['[email protected]','D#nse Cr%wd','Cr#m#n#l [email protected]@[email protected]'];
for(var i=0; i < arr.length; i++){
console.log(arr[i].replace(/[^@#%]/gi,"").length);
}
Результат будет:
1
2
6
Вы можете объяснить разницу?
Заранее спасибо.