Javascript正则表达式:删除HTML标记之间的文本

bad*_*oum 1 javascript regex

我想删除任何HTML标记之间的文本:

例如:

<div>
   <h1>Title</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

我的var结果应该是:

<div>
    <h1></h1>
</div>
Run Code Online (Sandbox Code Playgroud)

Ry-*_*Ry- 5

如果,正如您的问题所示,您希望从任何 HTML标记之间删除所有文本...只有真正的DOM才会削减它.

function removeAllTextNodes(node) {
    if (node.nodeType === 3) {
        node.parentNode.removeChild(node);
    } else if (node.childNodes) {
        for (var i = node.childNodes.length; i--;) {
            removeAllTextNodes(node.childNodes[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这不像textContentinnerHTML,将保留所有现有元素结构到位,仅删除文本.

如果你真的有一个字符串,并在浏览器中使用客户端JavaScript和字符串表示文档的内容的一部分(而不是整个文件-即你不会找到任何DTD, ,<html>,<head><body>中的元素),然后你只需将它放入一个元素就可以解析它:

var container = document.createElement("div");
container.innerHTML = htmlString;
removeAllTextNodes(container);
return container.innerHTML;
Run Code Online (Sandbox Code Playgroud)

否则,您可能需要JavaScript的HTML解析器.正如已经指出的那样,正则表达式在解析HTML方面并不是很好.