如何从JavaScript中删除字符串中的HTML?
答案 0 :(得分:237)
cleanText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
答案 1 :(得分:213)
使用浏览器的解析器可能是当前浏览器中最好的选择。以下内容将起作用,但需要注意以下几点:
<div>
元素中有效。 <body>
或<html>
或<head>
标记中包含的HTML在<div>
内无效,因此无法正确解析。textContent
(the DOM standard property) and innerText
(non-standard) properties are not identical。例如,textContent
将包含<script>
元素中的文本,而innerText
则不会(在大多数浏览器中)。这仅影响IE&lt; = 8,这是唯一不支持textContent
的主要浏览器。<script>
个元素。null
<img onerror='alert(\"could run arbitrary JS here\")' src=bogus>
代码:
var html = "<p>Some HTML</p>";
var div = document.createElement("div");
div.innerHTML = html;
var text = div.textContent || div.innerText || "";
答案 2 :(得分:43)
var html = "<p>Hello, <b>World</b>";
var div = document.createElement("div");
div.innerHTML = html;
alert(div.innerText); // Hello, World
这是最好的方法,你让浏览器做它最擅长的事情 - 解析HTML。
编辑:如下面的评论所述,这不是最常见的跨浏览器解决方案。最跨浏览器的解决方案是递归遍历元素的所有子元素并连接您找到的所有文本节点。但是,如果你正在使用jQuery,它已经为你做了:
alert($("<p>Hello, <b>World</b></p>").text());
查看text方法。
答案 3 :(得分:25)
我知道这个问题有一个公认的答案,但我觉得它在所有情况下都不起作用。
为了完整性,因为我花了太多时间在这上面,这就是我们所做的:我们最终使用了来自php.js的函数(对于那些更熟悉PHP而且还做了一个非常好的库偶尔会有一点JavaScript):
http://phpjs.org/functions/strip_tags:535
它似乎是唯一能够成功处理我填充到我的应用程序中的所有不同类型输入的JavaScript代码。也就是说,不破坏它 - 请参阅我对上面<script />
标记的评论。