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 = /( |<([^>]+)>)/ig
, body = tt
, result = body.replace(regex, "");
alert(result);
Svar #4
Detta är en lösning för HTML-taggar och   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(/<[^>]*(>|$)| |‌|»|«|>/g, 'ReplaceIfYouWantOtherWiseKeepItEmpty');
}
