Sé que hay toneladas de preguntas similares, pero esta puede ser ligeramente diferente.
Tengo una serie de etiquetas de span que incluyen identificadores únicos, que forman parte de una cadena JSON. Luego estoy tratando de reemplazar todos los ID con cadenas vacías, sabiendo que contienen números que son dinámicos. Por ejemplo, considere la siguiente matriz de objetos JSON dataArray
[ { "name": "testOne", "tag": "<span id=my-test-1>Test One</span>" }, { "name": "testTwo", "tag": "Test Two" }, { "name": "testThree", "tag": "Test Three" }, { "name": "testFour", "tag": "<span id=my-test-2>Test Four</span>" } ] Como puede ver, algunas etiquetas contienen identificadores y otras no. Por lo tanto, estoy buscando reemplazar cualquier etiqueta de span con cadenas vacías (es decir, eliminarlas) pero, como puede ver, los números difieren. También es importante tener en cuenta que a veces puede haber más identificaciones que existen.
Hasta ahora, tengo esto:
const dataString = JSON.stringify(dataArray); const newData = data.replaceAll("<span id=my-test-??>", "") //First, remove the opening tags JSON.parse(newData.replaceAll("</span>", "")) //then remove the closing tags Sin embargo, esto no reemplazará todas las etiquetas que tienen un número en my-test- Id. Por lo tanto, ¿cómo puedo reemplazar algo similar al anterior pero especificar que una identificación puede tener cualquier número que siga my-test- ?
const dataString = JSON.stringify(dataArray); const regex = /<span.*?>|<\/span>/gm; const newData = dataString.replace(regex,''); JSON.parse(newData);Esto debería hacerlo.
Puede iterar la matriz y reemplazar el contenido dentro de la flecha. Como eso:
arr = [ { "name": "testOne", "tag": "<span id=my-test-1>Test One</span>" }, { "name": "testTwo", "tag": "Test Two" }, { "name": "testThree", "tag": "Test Three" }, { "name": "testFour", "tag": "<span id=my-test-2>Test Four</span>" } ] n = arr.map(a => { a.tag = a.tag.replace(/>.*</g, "><"); return a; }) console.log(n)puedes hacerlo usando expresiones regulares
const dataToString = JSON.stringify(dataArray); const regex = /"<span([^]*)</span>"/gm; const newData = dataString.replace(regex,""); JSON.parse(newData); cuando pongo este código ([^]*) entre las etiquetas de intervalo, coincide con cualquier carácter