Вы можете создать регулярное выражение динамически, изменив интервал в строке element
на \s+
: он также будет соответствовать символам новой строки:
var str = `:
The left lower lung thick parenchymal
band as seen on prior scan remains not hypermetabolic. The posterior left
lung base tiny density as seen on prior scan remains not significantly
hypermetabolic.
`;
var element = 'The left lower lung thick parenchymal band as seen on prior scan remains not hypermetabolic';
var newElement = '<p1>The left lower lung thick parenchymal band as seen on prior scan remains not hypermetabolic<p1>';
let regex = RegExp(element.replace(/ +/g, "\\s+"), "g");
str = str.replace(regex, newElement);
console.log(str);
Если вы хотите, чтобы замена также сохранила исходные символы новой строки (при условии, что вы хотите обернуть только в пределах двух <p1>
), тогда используйте $&
обратная ссылка в newElement
:
var str = `:
The left lower lung thick parenchymal
band as seen on prior scan remains not hypermetabolic. The posterior left
lung base tiny density as seen on prior scan remains not significantly
hypermetabolic.
`;
var element = 'The left lower lung thick parenchymal band as seen on prior scan remains not hypermetabolic';
var newElement = '<p1>$&<p1>';
let regex = RegExp(element.replace(/ +/g, "\\s+"), "g");
str = str.replace(regex, newElement);
console.log(str);
Примечание:
Не ясно, что означает <p1>
. Если предполагается, что это тег XML, то следует понимать, что закрывающий тег должен быть </p1>
с прямой строкой sh.
Если в строке element
есть символы, имеющие особое значение в регулярных выражениях, то убедитесь, что избежать их. См. этот вопрос и ответ о том, как это сделать.