I would like to have a specific text colored differently in HTML/PHP/CSS/JS.
I have a text similar to this structure:
@john please move the invite to the next week.
What i would like to achieve is to have the wording “@john” colored in green while the rest of the text characters should remain in black. In other words the “@” and the first space ” ” right after the @, are the delimiters of the green text.
Can you please advise on how to achieve this?
Thanks, Slim
Advertisement
Answer
You can use Regular expressions for this; the character @
will just match a “@”, and the character w+
will match a word – a word is a set of characters which are unseparated by commas, spaces, full stops, etc.
Lastly, you will need to use a String Iterator
to find all matches and loop through them, and, of course, re-color them.
Here is how you would do this:
function color_text(text) { let matches = text.matchAll(/@w+/g); let current_match; while(!current_match?.done) { current_match = matches.next(); if(current_match?.done) { break; } let value = current_match?.value[0]; text = text.replace(value, "<span style='color: #00db58'>" + value + "</span>"); } return text; } // TESTING HERE -- - - -- - - - document.write(color_text("@john please move the invite to the next week.")); document.write("<br>"); document.write(color_text("@john please tell @josh to stop being annoying."));