¿Hay alguna forma de eliminar la etiqueta HMTL con contenido en HTML?
ejemplo :
const regexForStripHTML = /(<([^>]+)>)/gi const text = "OCEP <sup>®</sup> water product" const stripContent = text.replaceAll(regexForStripHTML, '') output : 'OCEP ® water product' Necesito eliminar ® también de una cadena
Rendimiento esperado
OCEP water product
Esto debería ser suficiente para su caso de uso:
const regexForStripHTML = /<sup.*>.*?<\/sup>/ig const text = "OCEP <sup>®</sup> water product" const stripContent = text.replaceAll(regexForStripHTML, ''); console.log(stripContent); const regexForStripHTML = /<.*>.*?/ig const text = "OCEP <html>®</html> water product" const stripContent = text.replaceAll(regexForStripHTML, ''); console.log(stripContent); Para eliminar el texto entre las etiquetas, debe hacer coincidir las etiquetas de apertura y cierre con el mismo nombre de etiqueta. Esta expresión regular coincidiría con las etiquetas iniciales <(?<tagname>.*?)> . Observe cómo el tagname recuerda el y se usa para la parte de expresiones regulares de las etiquetas de cierre correspondientes, que es <\/\k<tagname>> la parte intermedia .*? es coincidir con cualquier texto.
const regexForStripHTML = /(<(?<tagname>.*?)>.*?<\/\k<tagname>>)/g const text = "OCEP <sup>®</sup> water product" const stripContent = text.replaceAll(regexForStripHTML, '$')No he pensado en lo que sucede si las etiquetas están anidadas.
La eliminación de todas las etiquetas HTML y el texto interno se puede hacer con el siguiente fragmento. Regexp captura el nombre de la etiqueta de apertura, luego hace coincidir todo el contenido entre las etiquetas de apertura y cierre, luego usa el nombre de la etiqueta capturada para que coincida con la etiqueta de cierre.
const regexForStripHTML = /<([^</> ]+)[^<>]*?>[^<>]*?<\/\1> */gi; const text = "OCEP <sup>®</sup> water product"; const stripContent = text.replaceAll(regexForStripHTML, ''); console.log(text); console.log(stripContent);