Estoy tratando de encontrar una oración en un párrafo (contenida en un área de texto) y resaltarla. Todo funciona bien si la oración NO contiene paréntesis de apertura y cierre, como en el ejemplo a continuación. El método de reemplazo no puede reemplazar la cadena con su equivalente rodeada por las etiquetas de "marca". ¿Alguien puede aconsejarme cómo puedo actualizar mi Regex para encontrar y reemplazar una cadena que contiene paréntesis? ¿Necesito encontrar y reemplazar todos los paréntesis con "/(" y "/)" primero?
const text = "An economy is composed of suppliers (workers) and demanders (firms)." const regex = new RegExp(text, "\d"); // regex returns: /The market for labor, then, is composed of suppliers (workers) and demanders (firms). / console.log("REGEX:", regex); let match = text.replace(regex, "<mark>$&</mark>"); console.log("MATCH:", match);html:
<html> <body> <p id="txt">"(An economy is composed of suppliers (workers) and demanders (firms).)</p> </body> </html>JS:
function hilitetext() { const s = document.getElementById("txt").textContent; const regex = /(?:^[^(]?[^(]+)?(\(\w+\))/g;//retains parenthesis //const regex = /(?:^[^(]?[^(]+)?\((\w+)\)/g;//removes parenthesis document.getElementById("txt").textContent = s.replace(regex, "<mark>$1</mark>"); }