¿Cómo puedo crear un área de texto de entrada html para que pueda subrayar o formatear ciertas palabras?

Me gustaría un campo de entrada para el que pueda tener javascript establezca ciertos atributos para diferentes partes del campo de entrada. Un ejemplo simple para demostrar lo que me gustaría hacer: digamos que quiero subrayar todas las palabras malditas en un área de texto de entrada. Por lo tanto, javascript verificará el área de entrada de texto cuando se inserte una nueva letra, y para cualquier palabra que coincida con mi conjunto de palabras de maldición reconocidas, se subrayará la palabra. Tenga en cuenta que no quiero que el usuario / cliente pueda establecer ningún atributo del texto, simplemente quiero que el javascript pueda formatear ciertas palabras de manera diferente que otras (así que no hay barras de herramientas ni nada de eso). También quiero que la caja se vea exactamente como un área de texto normal en todos los demás aspectos.

Ya conozco algunos editores de texto enriquecido (como el editor juju y lwrte), así como algunos marcadores de syntax, pero no estoy seguro si hacen lo que quiero.

Entonces, ¿alguien sabe de una herramienta que me permita hacer esto?

Gracias

Puede hacer un div “contenteditable” estableciendo ese atributo en true en el div. Luego, rodee las palabras en cuestión con un marcado que no afecte al diseño, pero que se puede diseñar y quitar fácilmente más adelante.

Algo como esto:

 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean consequat gravida tempus. Vivamus convallis, purus dictum bibendum ullamcorper, neque ipsum aliquam ligula, sit amet imperdiet est ante non nisl. Mauris dignissim libero et urna iaculis at iaculis metus semper. Sed ac nisl eu arcu molestie pretium quis quis ligula. Cras vitae enim vitae lacus molestie dictum. Donec rutrum tincidunt augue, vel pretium lectus faucibus ut. In consequat diam accumsan urna fermentum vitae tincidunt ipsum rutrum. Curabitur sagittis, ante a viverra fringilla, orci urna feugiat urna, eu ultricies lacus odio adipiscing risus. Sed pellentesque blandit ipsum vel hendrerit. Nulla nibh mauris, egestas sed consectetur et, lobortis in dolor. Curabitur eu ante lectus. Cras consequat, dui sed pellentesque tempor, purus turpis egestas sapien, in fermentum eros tortor vel mi. Integer accumsan, augue id elementum pretium, est quam vehicula nisl, at congue purus sem quis ipsum. Aliquam commodo, erat in euismod lacinia, tortor lectus interdum lacus, quis vestibulum augue nulla in tellus.