javascript - 正则表达式字符串替换,同时保留原始换行符

标签 javascript regex

我有一个多字符串:

我的输入:

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>';

如何使用正则表达式将原始 str 中的 element 替换为 newElement

我的尝试:

str.replace(/[^\\S ]/, ' ').replace(element, newElement) 

当我尝试使用正则表达式替换时,我无法忽略换行符并同时替换它们。

预期结果:

var str = `<p1>The left lower lung thick parenchymal band as seen on prior
            scan remains not hypermetabolic</p1>.The posterior left lung base tiny  
            density as seen on prior scan remains not significantly
            hypermetabolic.`;

最佳答案

您可以通过更改 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>与正斜杠。

如果您的element字符串包含在正则表达式中具有特殊含义的字符,然后确保对它们进行转义。请参阅this Q&A关于如何做到这一点。

关于javascript - 正则表达式字符串替换,同时保留原始换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60149937/

相关文章:

javascript - 将函数绑定(bind)到 Twitter Bootstrap Modal Ajax Complete

javascript - 删除打印媒体查询的优雅方式

regex - 仅一组捕获数次

PHP preg_replace : Case insensitive match with case sensitive replacement

javascript - 如何与其他函数并行运行我的获取过程?

javascript - 存储 HTTP/SOAP 请求,以防无可用连接

javascript - 如何更新/编辑对象数组中对象的值?

regex - 使用删除

c# - 正则表达式包含 [ :alnum:] POSIX character class did not match string with C#, 但在线工具评估正常

Python正则表达式