Eliminar etiquetas HTML en Javascript con Regex
Estoy intentando eliminar todas las etiquetas HTML de una cadena en Javascript. Esto es lo que tengo... No puedo entender por qué no funciona... ¿alguien sabe qué estoy haciendo mal?
<script type="text/javascript">
var regex = "/<(.|\n)*?>/";
var body = "<p>test</p>";
var result = body.replace(regex, "");
alert(result);
</script>
¡Muchas gracias!
Respuesta #1
Prueba esto, teniendo en cuenta que la gramática de HTML es demasiado compleja para que las expresiones regulares sean correctas el 100% del tiempo:
var regex = /(<([^>]+)>)/ig
, body = "<p>test</p>"
, result = body.replace(regex, "");
console.log(result);
Si estás dispuesto a usar una biblioteca como jQuery, simplemente podrías hacer esto:
console.log($('<p>test</p>').text());
Respuesta #2
Esta es una pregunta antigua, pero me topé con ella y pensé en compartir el método que utilicé:
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 ahora contendrá: "some text and some more text"
Simple, no se necesita jQuery, y no debería fallarte incluso en casos más complejos.
Advertencia
Esto no puede manejar de manera segura el contenido del usuario, porque es vulnerable a inyecciones de scripts. Por ejemplo, al ejecutar esto:
var body = '<img src=fake onerror=alert("dangerous")> Hello';
var temp = document.createElement("div");
temp.innerHTML = body;
var sanitized = temp.textContent || temp.innerText;
Conduce a que se emita una alerta.
Respuesta #3
Esto funcionó para mí.
var regex = /( |<([^>]+)>)/ig
, body = tt
, result = body.replace(regex, "");
alert(result);
Respuesta #4
Esta es una solución para la etiqueta HTML y  , etc., y puedes eliminar y agregar condiciones para obtener el texto sin HTML y puedes reemplazarlo por cualquier cosa.
convertHtmlToText(passHtmlBlock)
{
str = str.toString();
return str.replace(/<[^>]*(>|$)| |‌|»|«|>/g, 'ReplaceIfYouWantOtherWiseKeepItEmpty');
}
