我想在文本中使用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>
但它不起作用。
答案 0 :(得分:3)
您已指定它位于document.body
中,因此在DOM中。然后你可以(你应该)使用DOM方法:
var siblingBrs = [].slice.call( document.querySelectorAll('br + br') );
siblingBrs.forEach( function( br ){
br.parentNode.removeChild( br );
});
请注意,它与源代码中<br />
元素的字符串表示无关。
BTW如果仅用于显示目的(为了避免视觉差距),您可以使用CSS:
br + br { display:none; }
答案 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>');
工作小提琴: