Digamos que tengo etiquetas de figura en una cadena
const content = 'Here is a sentence followed up with <figure><img /></figure> plus some more text.'¿Hay alguna manera de verificar si hay una etiqueta de figura en la cadena, seleccionar las etiquetas y todo su contenido y eliminarlas o filtrarlas todas con React o Javascript?
La salida deseada sería
const content = 'Here is a sentence followed up with plus some more text.'Sé que no está limpio, pero admite una consulta de Algolia.
Puede usar RegEx para esto. Un posible RegEx sería /(<figure>.+<\/figure>)/g ( https://regexr.com/6ke0o )
Entonces, un código de muestra se vería así:
const content = 'Here is a sentence followed up with <figure><img /></figure> plus some more text.'.replace(/(<figure>.+<\/figure>)/g, '')si solo desea eliminar las etiquetas (NO el cuerpo de la etiqueta):
console.log("Here is a sentence followed up with <figure><img /><\figure> plus some more text.".replaceAll(/<\\?[a-zA-Z\s]+\/?>/g,""))o:
.replaceAll( /(<([^>]+)>)/ig, ''); si solo desea eliminar la etiqueta de la figure :
console.log("Here is a sentence followed up with <figure><img/><\figure> plus some more text.".replaceAll(/<figure>.+<\figure>/g,""))Puede usar el analizador DOM, crear un elemento, colocar su contenido como HTML interno y filtrar los childNodes para que solo queden los nodos de texto.
const content = 'Here is a sentence followed up with <figure><img /></figure> plus some more text.' const tester = document.createElement('div'); tester.innerHTML = content; const output = [...tester.childNodes].filter(child => child.nodeType === 3).map(child => child.nodeValue.trim()).join(" "); console.log(output);