Quiero usar HTML y JS para implementar una función que pueda resaltar todas las palabras que se incluyen en un léxico de palabras negativas en un texto. Aquí está mi código JS:
{% for neg in negative_words_list %} var m=document.getElementById("a") m.innerHTML = m.innerHTML.replace(/{{neg}}/ig,"<font color=red>$&</font>"); {% endfor %}Pero cuando ejecuté el código, encontré que partes de algunas palabras también están resaltadas, porque estas partes solo coinciden con algunas palabras negativas en el léxico. Al igual que esta imagen ("contratado", "comienza" y "perplejo"): ingrese la descripción de la imagen aquí
Solo quiero que mi programa resalte las palabras completas en lugar de una parte de una palabra. ¿Qué tengo que hacer?
Puedes usar
.replace(/\B{{neg}}\B/ig,"<font color=red>$&</font>") Aquí, {{neg}} solo coincidirá si
{{neg}} , hay un comienzo de cadena o un carácter que no sea una letra, un dígito o un guión bajo y{{neg}} , hay un final de cadena o un carácter que no es una letra, un dígito o un guión bajo.Usa esta fórmula:
{% for neg in negative_words_list %} var m=document.getElementById("a") m.innerHTML = m.innerHTML.replace(new RegExp(neg, 'gi'),"<font color=red>$&</font>"); {% endfor %}============================
var st = 'hello world aa is the ba and bb to ab' var ar = ['aa', 'ab', 'ba', 'bb'] for (let i=0; i<ar.length; i++) { st = st.replace(new RegExp(ar[i], 'gi'), "<font color=red>$&</font>") } // output: st = 'hello world <font color=red>aa</font> is the <font color=red>ba</font> and <font color=red>bb</font> to <font color=red>ab</font>'