I want to match a separate word which starts with # character.
enter #code here - #code
some#string here - nothing
#test - #test
I came up with following regex:
"enter #code here".replace(/\b#[\w]*/gi, "REPLACED")
But it doesn’t work. After some testing i found that
"enter #code here".replace(/#\b[\w]*/gi, "REPLACED")
works just fine.
Now can someone explain why \b# part is incorrect in this case?
Thanks!
\bis a transition between a non-word character and a word character, or vice-versa. Because a'#'is not a word character, your first expression will only match a string that has a word character directly before the#.What might work is the expression
/(\W)#[\w]*/gi, because your second example will match any of those three strings. Use a backreference to put the non-word character from the match expression into the replacement.