Quiero reemplazar cada palabra que comienza con % con la misma palabra sin % y cambiando su color a verde.
Sin embargo, todo lo que puedo hacer es eliminar el % sin cambiar de color.
¿Hay algo que me estoy perdiendo aquí?
var text = "Lite %match Color" text = text.replace(/%(.*?)/g, "<span style='color: green'>$1</span>") document.getElementById("output").innerHTML = text <label id="output"></label>El problema con su expresión regular es que, dado que no tiene anticipación después de .*? , coincidirá con la menor cantidad de caracteres, que es ninguno. Para solucionar este problema, puede sustituir esa parte con \S+ , que intenta hacer coincidir cualquier carácter que no sea un espacio (al menos uno).
var text = "Lite %match Color" text = text.replace(/%(\S+)/g, "<span style='color: green'>$1</span>") document.getElementById("output").innerHTML = text <label id="output"></label> var text = "Lite %match Color" text = text.replace(/\s+%(.*?)\s+/g, "<span style='color: green'> $1 </span>") document.getElementById("output").innerHTML = text <div id="output"> </div>