在中断之间使用单个和尊重文本替换多个中断标记

时间:2015-07-24 09:06:03

标签: javascript jquery html dom

我想用正文中的单个中断替换多个中断,它应该在中断之间尊重文本。此外,它不应该影响任何元素上的事件处理程序。 例如,

text1<br/><br/><br/>text2<br/><br/><p>text3</p>text4<br/><br/><br/>text5

应该改为

text1<br/>text2<br/><p>text3</p>text4</p><br/>text5

我在stackoverflow上发现了一些与此相关的问题,但我无法使这些工作适用于我的场景。我相信它不重复所以发布它。

2 个答案:

答案 0 :(得分:0)

试试这个

var oldText="text1<br/><br/><br/>text2<br/><br/><p>text3</p>text4<br/><br/><br/>text5";
var newText = oldText.replace(/(?:<br[^>]*>\s*){2,}/g, '<br>');

修改

根据您的需要

$("#clickableDiv" ).click(function() {
        alert('clicked me');
    });

    $("p" ).click(function() {
        alert('clicked me');
    });

    var bodyHTML = $('body').html();
    console.log( "ready!" );

    bodyHTML = bodyHTML.replace(/(?:<br[^>]*>\s*){2,}/g,"<br/>");
    console.log(bodyHTML);
    $('body').html(bodyHTML);
});

UPDATED FIDDLE

答案 1 :(得分:0)

试试

$a = "text1<br/><br/><br/>text2<br/><br/><p>text3</p>text4<br/><br/><br/>text5";
$b = preg_replace("/(?:<br\/>)+/", "<br/>", $a);
// $b == "text1<br/>text2<br/><p>text3</p>text4<br/>text5"