javascript正则表达式,将多个实例替换为多行字符串中的单个实例

javascript regex, replace multiple instances with a single one in multiline string

本文关键字:实例 字符串 单个 替换 正则表达式 javascript      更新时间:2023-12-16

我在javascript中有一个多行字符串,如下所示:

"<p> </p>
<p> </p>
<p> </p>
<p> </p>
"

我正在尝试删除<p> </p>的额外实例,因此我正在尝试使用以下regex。

var content = getContent() // This returns the string mentioned above.
content = content.replace(/(<p> <'/p>)+/g, "<p> <'/p>");

但这似乎并不奏效。很可能是因为字符串是多行字符串?我已经用一个单行字符串尝试了上面的正则表达式,它工作得很好。在阅读了更多关于javascript正则表达式的文档后,我意识到我们需要使用m修饰符来处理多行字符串。所以我把正则表达式改为:

content = content.replace(/(<p> <'/p>)+/gm, "<p> <'/p>"); // note the `m` modifier

但它仍然不起作用。有线索吗?

您应该替换所有空格(包括新行):

content = content.replace(/(<p>'s*<'/p>'s*)+/g, "<p> <'/p>");

演示

使用此替换:

content = content.replace(/(<p> +<'/p>'n*)+/g, "<p> </p>");
/=> <p> </p>