Estoy tratando de eliminar todas las etiquetas html de una cadena en Javascript. Esto es lo que tengo ... No puedo entender por qué no funciona ... ¿Alguien sabe lo que 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!
javascript
regex
Gabe
fuente
fuente
"<img src=bogus onerror=alert(1337)"
. El primero falla porque el analizador HTML no requiere que la última etiqueta sea cerrada por a>
, y el segundo falla porque la carga de la imagen comienza incluso antes de que se agregue un árbol DOM analizado al DOM, e$('<img ...>')
invoca el analizador HTML.>
se incluye a en un valor de atributo; así<div data="a + b > c">
Esta es una vieja pregunta, pero me la encontré y pensé en compartir el método que usé:
sanitized
ahora contendrá:"some text and some more text"
Simple, no se necesita jQuery y no debería decepcionarte ni siquiera en casos más complejos.
fuente
innerText
temp.textContent
si existe, y solo lo intentarátemp.innerText
si no es así. Su navegador debe tener el primero, pero para los navegadores que no lo tienen, se usa el último en su lugar :)Esto funcionó para mí.
fuente
console.log( my_html.replace(/( |<([^>]+)>)/ig, "") );
Así es como TextAngular (WYSISYG Editor) lo está haciendo. También encontré que esta es la respuesta más consistente, que es NO REGEX.
fuente
puede utilizar una poderosa biblioteca para la gestión de cadenas que es undrescore.string.js
=> 'un enlace'
=> 'a linkalert ("¡hola mundo!")'
No olvide importar esta lib de la siguiente manera:
fuente
mi sencilla biblioteca de JavaScript llamada FuncJS tiene una función llamada "strip_tags ()" que hace la tarea por ti, sin necesidad de que ingreses ninguna expresión regular.
Por ejemplo, digamos que desea eliminar etiquetas de una oración; con esta función, puede hacerlo simplemente así:
Esto producirá "¡Esta cadena contiene muchas etiquetas!".
Para una mejor comprensión, lea la documentación en GitHub FuncJS .
Además, si lo desea, proporcione algunos comentarios a través del formulario. ¡Sería muy útil para mí!
fuente
strip_tags()
hace en lugar de simplemente promocionar tu biblioteca y no explicarlo? El enlace explica el uso de la API pero no lo que hace .strip_tags = function(e) { var _hasTag, _tag_string; if (!(e === void 0 || e === null || e === "")) { _tag_string = e; if (typeof _tag_string === "object") { _tag_string = _tag_string.outerHTML; } _hasTag = _tag_string.match(/(<([^>]+)>)/ig); if (_hasTag) { return trim(_tag_string.replace(/(<([^>]+)>)/ig, '')); } else { return trim(_tag_string); } } else { throw new Error("The 'strip_tags' function expects one argument in the form of a string or object."); } };
Esta es una solución para etiquetas HTML y & nbsp, etc. y puede eliminar y agregar condiciones para obtener el texto sin HTML y puede reemplazarlo por cualquiera.
fuente
Para obtener un desinfectante HTML adecuado en JS, consulte http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer
fuente
fuente
La respuesta seleccionada no siempre garantiza que se elimine el HTML, ya que aún es posible construir una cadena HTML no válida a través de ella creando una cadena como la siguiente.
Esta entrada garantizará que la extracción ensamble un conjunto de etiquetas para usted y dará como resultado:
Además, la función de texto de jquery eliminará el texto que no esté rodeado por etiquetas.
Aquí hay una función que usa jQuery pero debería ser más robusta en ambos casos:
fuente
La forma en que lo hago es prácticamente de una sola línea.
La función crea un objeto Range y luego crea un DocumentFragment en el Range con la cadena como contenido secundario.
Luego toma el texto del fragmento, elimina cualquier carácter "invisible" / de ancho cero y lo recorta de cualquier espacio en blanco inicial / final.
Me doy cuenta de que esta pregunta es antigua, solo pensé que mi solución era única y quería compartirla. :)
fuente
Como han dicho otros, la expresión regular no funcionará. Tómese un momento para leer mi artículo sobre por qué no puede y no debe intentar analizar html con expresiones regulares, que es lo que está haciendo cuando intenta eliminar html de su cadena de origen.
fuente