Во-первых, часть Dynami c должна быть с экранированием , в противном случае .
будет соответствовать любому символу, кроме символа разрыва строки, и будет совпадать также с ab@xyz§com;
.
Далее вам нужно сопоставить это только в начале строки или после ;
. Итак, вы можете использовать
var Full_str1 = 'ab@xyz.com;cab@xyz.com;c-ab@xyz.com;c.ab@xyz.com;c_ab@xyz.com;';
var removable_str2 = 'ab@xyz.com;';
var rx = new RegExp("(^|;)" + removable_str2.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), "g");
console.log(Full_str1.replace(rx, "$1"));
// => cab@xyz.com;c-ab@xyz.com;c.ab@xyz.com;c_ab@xyz.com;
Замените "g"
на "gi"
для сопоставления без учета регистра.
См. Демонстрационную версию regex . Обратите внимание, что (^|;)
соответствует и захватывает в Группу 1 начало расположения строки (пустая строка) или ;
и $1
в шаблоне замены восстанавливает этот символ в результате.
ПРИМЕЧАНИЕ : Если шаблон известен заранее и вы хотите обрабатывать только шаблон ab@xyz.com;
, используйте литерал регулярного выражения без экранирования, Full_str1.replace(/(^|;)ab@xyz\.com;/g, "$1")
.