用javascript替换多个<br/>标签

时间:2015-01-23 15:31:56

标签: javascript html

我想在文本中使用JavaScript替换单个<br />的多个<br />标记。 我的文字如:

some text.<br />
<br />
<br />
<br />
<br />
<br />
<br />
some text

我试过这段代码:

document.body.innerHTML = document.body.innerHTML.replace(/<br /> <br />
    <br /> <br /><br /> <br />/g,"<br />"); </script>

但它不起作用。

4 个答案:

答案 0 :(得分:3)

您已指定它位于document.body中,因此在DOM中。然后你可以(你应该)使用DOM方法:

var siblingBrs = [].slice.call( document.querySelectorAll('br + br') );
siblingBrs.forEach( function( br ){
    br.parentNode.removeChild( br );
});

http://jsfiddle.net/jL8jkkt0/

请注意,它与源代码中<br />元素的字符串表示无关。

BTW如果仅用于显示目的(为了避免视觉差距),您可以使用CSS:

br + br { display:none; }

http://jsfiddle.net/jL8jkkt0/1/

答案 1 :(得分:0)

尝试以下方法:

var stripped = original.replace(/(<br\s*\/?>){3,}/gi, '<br>');

在这里替换不同的值......

{3,}

...将允许您控制删除发生的次数。

希望这有帮助!

答案 2 :(得分:0)

首先将HTML作为字符串获取,然后使用regex替换它:

var s = document.body.innerHTML;
document.body.innerHTML = s.replace(/(\<br[\s]*\/?\>[\s]*)+/g, '<br/>');
First Line<br><br /><br/><br><br /><br/>Second Line

答案 3 :(得分:-1)

试试这个:

var newText = oldText.replace(/(<br\s*\/?>){3,}/gi, '<br>');

工作小提琴:

http://jsfiddle.net/r5bu1xq2/