jQuery/JS,删除/修剪尾部 html 换行符?

And*_*rew 3 html javascript regex jquery jquery-1.4

我正在寻找一些关于使用 javascript 或 jquery 删除尾随 html < br /> 标记的最有效方法的想法。

规则:

  1. 前面和后面的 br 必须去掉。
  2. 它必须删除非关闭和自关闭 br 标签。
  3. 文本内容中的所有 br 必须保持不变。

HTML:

<div class="generatedContent">
    <br>My awesome content.
    <br><br>Some More awesome content.
    <br>
    <br>
    <br>I still need the content written here<br/>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
</div>
Run Code Online (Sandbox Code Playgroud)



期望的输出:

<div class="generatedContent">
    My awesome content.
    <br><br>Some More awesome content.
    <br>
    <br>
    <br>I still need the content written here
</div>
Run Code Online (Sandbox Code Playgroud)

Tim*_*own 5

无法理解为什么您想为此使用正则表达式,就像大多数答案一样。在这里使用 DOM 方法很简单:

function isBrOrWhitespace(node) {
    return node && ( (node.nodeType == 1 && node.nodeName.toLowerCase() == "br") ||
           (node.nodeType == 3 && /^\s*$/.test(node.nodeValue) ) );
}

function trimBrs(node) {
    while ( isBrOrWhitespace(node.firstChild) ) {
        node.removeChild(node.firstChild);
    }
    while ( isBrOrWhitespace(node.lastChild) ) {
        node.removeChild(node.lastChild);
    }
}

$(".generatedContent").each( function() {
    trimBrs(this);
} );
Run Code Online (Sandbox Code Playgroud)