Tengo una tabla en una página, donde hay entradas de texto, y tengo uno o más "hashtags", que quiero identificar a través de JavaScript/JQuery y reemplazarlos con un enlace.
Actualmente estoy usando el siguiente selector de expresiones regulares para hashtags: /#([a-zA-Z0-9]+)/g
He estado experimentando con los métodos replaceWith y replace de JQuery, pero aún no pude lograr el resultado deseado.
Entradas de ejemplo en la página:
<td class="entry">Had meeting with client #Project1</td>Esta es mi salida deseada (después de manipular a través de JavaScript/JQuery):
`<td class="entry">Had meeting with client <a href="search.php?`query=#Project1">#Project1</a></td>¿Alguien ayuda con una función/para esto? Como mi código no está cerca de funcionar, elijo no publicar el código.
Puedes hacer algo como esto usando JavaScript:
const entries = document.querySelectorAll(".entry"); entries.forEach((entry) => { entry.innerText.match(/#([a-zA-Z0-9]+)/g).forEach((hash) => { entry.innerHTML = entry.innerHTML.replace( hash, `<a href="search.php?query=${hash}">${hash}</a>` ); }); }); <p class="entry">Had meeting with client #Project1</p> <p class="entry">Had meeting with client #Project2 & #Project3</p>¿Quizás esta solución ayude?
document.querySelectorAll("table td.entry").forEach((el) => { el.innerHTML = el.innerHTML.replace(/#([a-zA-Z0-9]+)/g, '<a href="search.php?`query=#$1">#$1</a>') }) <table> <tbody> <td class="entry">Had meeting with client #Project1</td> <td class="entry">Had meeting with client #Project2</td> <td class="entry">Had meeting with client #Project3</td> <td class="entry">Had meeting with client #Project4</td> <td class="entry">Had meeting with client #Project5</td> </tbody> </table>intentalo:
const str= '<td class="entry">Had meeting with client #Project1</td>'; const match = str.match(/#([a-zA-Z0-9]+)/g); var result = str.replace(match[0],`<a href="search.php?query=${match[0]}">${match[0]}</a>`);