JavaScript regex, searching for hashtags

javascript, regex

Solution

Try this replace call:

EDIT: if you want to skip `http://site.com/#tag` kind of strings then use:

var repl = some_string.replace(/(^|\W)(#[a-z\d][\w-]*)/ig, '$1<span>$2</span>');

Problem

How can I search some text for any and all hashtags (alphanumeric AND underscore AND hyphen) and wrap them in span tags eg search ``` some_string = "this is some text with 3 hashtags #Tag1 and #tag-2 and #tag_3 in it" ``` and convert it to: ``` "this is some text with 3 hashtags <span>#Tag1</span> and <span>#tag-2</span> and <span>#tag_3</span> in it" ``` I've got this so far: ``` some_string = some_string.replace(/\(#([a-z0-9\-\_]*)/i,"<span>$1</span>"); ``` but one fault is it doesn't include the # in the wrappings like it should. It seems to output: ``` "this is some text with 3 hashtags <span>Tag1</span> and #tag-2 and #tag_3 in it " ``` Also it only detects the first hashtag that it comes across (eg. `#Tag1` in this sample), it should detect all. Also I need the hashtags to be a minimum of 1 character AFTER the #. So # on its own should not match. Thanks

Original source