No olvides que en las ciencias cualquier problema casi siempere suele tener más de una resoluciones, así que nosotros enseñamos lo más óptimo y eficiente.
Solución:
cleanText = strInputCode.replace(/?[^>]+(>|$)/g, "");
Destilado de este sitio web (web.achive).
Esta expresión regular busca <
una barra inclinada opcional /
uno o más caracteres que no son >
entonces tambien >
o $
(el fin de la línea)
Ejemplos:
'Hello' ==> 'Hello'
^^^^^ ^^^^^^
'Unterminated Tag 'Unterminated Tag '
^^
Pero no es a prueba de balas:
'If you are < 13 you cannot register' ==> 'If you are '
^^^^^^^^^^^^^^^^^^^^^^^^
'Hello' ==> ' 42">Hello'
^^^^^^^^^^^^^^^^^^ ^^^^^^
Si alguien está tratando de romper su aplicación, esta expresión regular no te protegerá. Solo debe usarse si ya conoce el formato de su entrada. Como han señalado otras personas conocedoras y en su mayoría cuerdas, para quitar las etiquetas de manera segura, usted deber utiliza un analizador.
Si no tiene acceso a un analizador conveniente como el DOM, y no puede confiar en que su entrada esté en el formato correcto, es mejor que use un paquete como sanitize-html, y también hay otros desinfectantes disponibles.
Usar el analizador del navegador es probablemente la mejor apuesta en los navegadores actuales. Lo siguiente funcionará, con las siguientes advertencias:
- Su HTML es válido dentro de un elemento. HTML contenido dentro
o
o
etiquetas no es válida dentro de un
y, por lo tanto, es posible que no se analice correctamente.textContent
(la propiedad estándar DOM) yinnerText
Las propiedades (no estándar) no son idénticas. Por ejemplo,textContent
incluirá texto dentro de unelement while
innerText
will not (in most browsers). This only affects IE <=8, which is the only major browser not to supporttextContent
.- The HTML does not contain
elementos.
- El HTML no es
null
- El HTML proviene de una fuente confiable. Usar esto con HTML arbitrario permite ejecutar JavaScript arbitrario que no es de confianza. Este ejemplo es de un comentario de Mike Samuel sobre la pregunta duplicada:
Código:
var html = "
Some HTML
"; var div = document.createElement("div"); div.innerHTML = html; var text = div.textContent || div.innerText || "";var html = "
Hello, World"; var div = document.createElement("div"); div.innerHTML = html; alert(div.innerText); // Hello, World
Prácticamente la mejor forma de hacerlo es dejar que el navegador haga lo que mejor hace: analizar HTML.
Editar: como se indica en los comentarios a continuación, esta no es la solución más multinavegador. La solución más multinavegador sería revisar recursivamente todos los elementos secundarios del elemento y concatenar todos los nodos de texto que encuentre. Sin embargo, si está usando jQuery, ya lo hace por usted:
alert($("
Hello, World
").text());Echa un vistazo al método de texto.
Agradecemos que desees añadir valor a nuestro contenido informacional asistiendo con tu veteranía en las aclaraciones.
¡Haz clic para puntuar esta entrada!(Votos: 2 Promedio: 4)Utiliza Nuestro Buscador