Necesito eliminar los atributos html de una cadena html. Tengo algunos campos de entrada de texto formateados que permiten a los usuarios copiar y pegar texto manteniendo el html básico. El problema es que parte del texto copiado de un documento de Word viene con atributos que deben eliminarse. Actualmente, la expresión regular que estoy usando funciona en un probador de expresiones regulares, pero ninguno de los atributos se elimina.
Código para eliminar atributos:
var stringhtml = '<div class="Paragraph BCX0 SCXW244271589" paraid="1364880375" paraeid="{8e523337-60c9-4b0d-8c73-fb1a70a2ba58}{165}" style="margin-bottom: 0px;margin-left:96px;padding:0px;user-select:text;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent; overflow-wrap: break-word;">some text</div>' var regex = /[a-zA-Z]*=".*?"/; var replacedstring = stringhtml.replace(regex, ''); document.write(replacedstring);¡Cualquier ayuda es apreciada!
Existe bastante literatura sobre por qué analizar HTML con expresiones regulares puede ser bastante arriesgado: esta famosa pregunta de StackOverflow es un buen ejemplo.
Como @Polymer ha señalado, su expresión regular actual perderá atributos con comillas simples, pero también hay otras posibilidades: atributos data , por ejemplo, data-id="233" se perderán, y también atributos sin comillas, como disabled . ¡Podría haber más!
Puede terminar siempre poniéndose al día con este enfoque, siempre teniendo que cambiar su expresión regular a medida que encuentre nuevas combinaciones en su HTML.
Un enfoque más seguro podría ser usar el método DOMParser para analizar su cadena como HTML y extraer el contenido de esa manera:
let stringhtml = '<div class="Paragraph BCX0 SCXW244271589" paraid="1364880375" paraeid="{8e523337-60c9-4b0d-8c73-fb1a70a2ba58}{165}" style="margin-bottom: 0px;margin-left:96px;padding:0px;user-select:text;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent; overflow-wrap: break-word;">some text</div>' let parser = new DOMParser(); let parsedResult = parser.parseFromString(stringhtml, 'text/html'); let element = document.createElement(parsedResult.body.firstChild.tagName); element.innerText = parsedResult.documentElement.textContent; console.log(element);