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

时间:2013-11-29 07:35:14

标签: javascript regex multiline

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

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

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

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

但它仍然无效。任何线索?

2 个答案:

答案 0 :(得分:2)

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

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

Demonstration

答案 1 :(得分:0)

这个替换:

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