Ta bort HTML-taggar i Javascript med Regex


Jag försöker ta bort alla HTML-taggar från en sträng i Javascript. Här är vad jag har... Jag kan inte lista ut varför det inte fungerar....någon som vet vad jag gör fel?

<script type="text/javascript">

var regex = "/<(.|\n)*?>/";
var body = "<p>test</p>";
var result = body.replace(regex, "");
alert(result);

</script>

Tack så mycket!

Svar #1

Prova detta, med tanke på att grammatiken i HTML är för komplex för att reguljära uttryck ska vara korrekta 100 % av gångerna:

var regex = /(<([^>]+)>)/ig
,   body = "<p>test</p>"
,   result = body.replace(regex, "");

console.log(result);

Om du är villig att använda ett bibliotek som jQuery, kan du helt enkelt göra så här:

console.log($('<p>test</p>').text());

Svar #2

Det här är en gammal fråga, men jag råkade på den och tänkte att jag skulle dela metoden jag använde:

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;

sanitized kommer nu att innehålla: "some text and some more text"

Enkelt, inget jQuery behövs, och det borde inte svika dig även i mer komplexa fall.

Varning

Detta kan inte säkert hantera användarinnehåll, eftersom det är sårbart för skriptinjektioner. Till exempel, att köra detta:

var body = '<img src=fake onerror=alert("dangerous")> Hello';
var temp = document.createElement("div");
temp.innerHTML = body;
var sanitized = temp.textContent || temp.innerText;

Leder till att en varning skickas ut.

Svar #3

Detta fungerade för mig.

   var regex = /(&nbsp;|<([^>]+)>)/ig
      ,   body = tt
     ,   result = body.replace(regex, "");
       alert(result);

Svar #4

Detta är en lösning för HTML-taggar och &nbsp osv och du kan ta bort och lägga till villkor för att få texten utan HTML och du kan ersätta den med vad som helst.

convertHtmlToText(passHtmlBlock)
{
   str = str.toString();
  return str.replace(/<[^>]*(>|$)|&nbsp;|&zwnj;|&raquo;|&laquo;|&gt;/g, 'ReplaceIfYouWantOtherWiseKeepItEmpty');
}

Relaterade artiklar