Javascript修剪换行符,这些换行符为<;br/>;s

Javascript修剪换行符,这些换行符为<;br/>;s,javascript,jquery,html,Javascript,Jquery,Html,假设我在标记中有以下代码: <div id="something"><br /> <br />Hello<br />World<br><br /> </div> 如果用正则表达式替换,它将是 return html.replace(/\s*(<br ?\/>\s*)+/g, "<br />").replace(/^<br \/>|<br \/>$/g, "")

假设我在
标记中有以下代码:

<div id="something"><br /> <br />Hello<br />World<br><br />   </div>

如果用正则表达式替换,它将是

return html.replace(/\s*(<br ?\/>\s*)+/g, "<br />").replace(/^<br \/>|<br \/>$/g, "");

可以使用删除字符串开头和结尾处的空格和节点

x = x.replace(/^( |<br \/>)*(.*?)( |<br \/>)*$/,"$2");
x=x.replace(/^(|)*(*?)(|)*$/,“$2”);

但是您必须将此应用于div元素的
innerHTML

没有删除所有换行符,在
Hello
World
p.S之间仍然有一个换行符:您的标记不正确,所以我将其删除:

@roXon:
trim
的工作方式相同,带空格。@DavidHedlund反正

!=<代码>
Oops,我之前的评论是为了回应@Aesthete。对不起,这个正则表达式对我不起作用,
a
b
变成了
a
@Rudi:我无法复制<代码>“a
b”变为
“a
b”
(无更改),因为它缺少斜杠<代码>“a
b”按预期变成了
“a
b”
。抱歉@Bergi我的错!
var el = document.getElementById("something");
for (var i=0, remove=true; i<el.childNodes.length; ) {
    var child = el.childNodes[i];
    if (child.nodeType == 3 && child.isElementContentWhitespace)
        el.removeChild(child);
    else if (child.nodeType == 1) {
        if (child.nodeName.toLowercase() == "br" && remove)
            el.removeChild(child);
        else
            // run DOM tree recursively?
        remove = true;
    } else {
       remove = false;
       i++;
    }
}
if (el.lastChild.nodeType == 1 && el.lastChild.nodeName.toLowercase() == "br")
    el.removeChild(el.lastChild);
x = x.replace(/^( |<br \/>)*(.*?)( |<br \/>)*$/,"$2");