删除脚本中的HTML标记

时间:2016-10-18 09:33:28

标签: javascript python regex replace

我在互联网上找到了这段代码。它需要一个句子,并使每个单词与该单词链接。但它有一个弱点:如果一个句子中有HTML,这个脚本不会删除它。

例如:它将“http://www.merriam-webster.com/dictionary/<b>asserted</b>”替换为“<b>asserted</b>

您能告诉我在此代码中要更改的内容,以便将“http://www.merriam-webster.com/dictionary/asserted”更改为“var content = document.getElementById("sentence").innerHTML; var punctuationless = content.replace(/[.,\/#!$%\؟^?&\*;:{}=\-_`~()”“"]/g, ""); var mixedCase = punctuationless.replace(/\s{2,}/g); var finalString = mixedCase.toLowerCase(); var words = (finalString).split(" "); var punctuatedWords = (content).split(" "); var processed = ""; for (i = 0; i < words.length; i++) { processed += "<a href = \"http://www.merriam-webster.com/dictionary/" + words[i] + "\">"; processed += punctuatedWords[i]; processed += "</a> "; } document.getElementById("sentence").innerHTML = processed; ”。

sample1.str

sample1.yy

sample1_ABC.log

3 个答案:

答案 0 :(得分:5)

此正则表达式/&lt; {1} [^&lt;&gt;] {1,}&gt; {1} / g应替换其中两个&lt;&gt;之间的字符串中的任何文本。和括号本身有一个空白区域。此

  var str = "<hi>How are you<hi><table><tr>I<tr><table>love cake<g>"
  str = str.replace(/<{1}[^<>]{1,}>{1}/g," ")
  document.writeln(str);

会回复“你好我喜欢蛋糕”。

如果您粘贴此

var stripHTML = str.mixedCase(/<{1}[^<>]{1,}>{1}/g,"")

就在这个

之下
var mixedCase = punctuationless.replace(/\s{2,}/g);

并在行之后用stripHTML替换mixedCase,它可能会起作用

答案 1 :(得分:1)

function stripAllHtml(str) {
  if (!str || !str.length) return ''

  str = str.replace(/<script.*?>.*?<\/script>/igm, '')

  let tmp = document.createElement("DIV");
  tmp.innerHTML = str;

  return tmp.textContent || tmp.innerText || "";
}

stripAllHtml('<a>test</a>')

此函数将删除所有HTML并仅返回文本。

希望这对您有用

答案 2 :(得分:0)

如果您需要删除HTML标签和HTML实体,可以使用

const text = '<p>test content </p><p><strong>test bold</strong>&nbsp;</p>'
text.replace(/<[^>]*(>|$)|&nbsp;|&zwnj;|&raquo;|&laquo;|&gt;/g, '');

结果将为“测试内容测试粗体”