var body = '<div id="anid">some <a href="link">text</a></div> and some more text';
var temp = document.createElement("div");
temp.innerHTML = body;
var sanitized = temp.textContent || temp.innerText;
已清理的现在将包含: "some text and some more text"
简单,不需要jQuery,即使在更复杂的情况下它也不应该让你失望:)
詹姆士
-1
这对我有用 .
var regex = /( |<([^>]+)>)/ig
, body = tt
, result = body.replace(regex, "");
alert(result);
@license textAngular
Author : Austin Anderson
License : 2013 MIT
Version 1.5.16
// turn html into pure text that shows visiblity
function stripHtmlToText(html)
{
var tmp = document.createElement("DIV");
tmp.innerHTML = html;
var res = tmp.textContent || tmp.innerText || '';
res.replace('\u200B', ''); // zero width space
res = res.trim();
return res;
}
10 回答
有关JS中正确的HTML清理程序,请参阅http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer
试试这个,注意HTML的语法太复杂了,正规表达式在100%的时间都不正确:
如果您愿意使用jQuery等库,您可以这样做:
这是一个老问题,但我偶然发现它并认为我会分享我使用的方法:
已清理的现在将包含:
"some text and some more text"
简单,不需要jQuery,即使在更复杂的情况下它也不应该让你失望:)
詹姆士
这对我有用 .
我的 simple 名为FuncJS的JavaScript库有一个名为"strip_tags()"的函数,可以为您完成任务 - 无需您输入任何正则表达式 .
例如,假设您要从句子中删除标签 - 使用此功能,您可以像这样执行:
这将产生“这个字符串包含很多标签!” .
为了更好地理解,请阅读GitHub FuncJS上的文档 .
此外,如果您愿意,请通过表单提供一些反馈 . 这对我很有帮助!
TextAngular(WYSISYG Editor)就是这样做的 . 我也发现这是最一致的答案,这是NO REGEX .
你可以使用一个功能强大的库来管理String undrescore.string.js
不要忘记导入此lib如下:
所选答案并不总能确保HTML被剥离,因为仍然可以通过制作如下所示的字符串来构建无效的HTML字符串 .
此输入将确保剥离为您组装一组标记,并将导致:
另外,jquery的文本函数将剥离未被标签包围的文本 .
这是一个使用jQuery的函数,但对于这两种情况应该更强大:
像其他人所说,正则表达式不会起作用 . 花点时间阅读我的article,了解为什么你不能,也不应该尝试用正则表达式解析html,这就是你试图从你的源字符串中删除html的原因 .