使用javascript正则表达式链接多个主题标签,没有空格

时间:2014-07-01 13:23:51

标签: javascript regex hashtag linkify

我目前使用正则表达式链接主题标签,如下所示:

var text = "#sun #summer";
text = text.replace(/(^|\s)#(\S+)/g, '$1<a href="/$2">#$2</a>');

输出:

"#<a href="/sun">sun</a> #<a href="/summer">summer</a>"

这很好用,但有时候人们会在它们之间添加没有空格的主题标签,所以像这样:"#sun#summer"

如何在没有空格的情况下链接这种类型的标签?

我试过了:

var text = "#sun#summer";
text = text.replace(/(^|.)#(.|\S+)/g, '$1<a href="/$2">#$2</a>');

输出:

"<a href="/s">#s</a>un<a href="/s">#s</a>ummer"

但仅适用于#

之后的一个字符

2 个答案:

答案 0 :(得分:2)

var text = "#sun#summer";
text.replace(/#([^\s#]+)/g, '<a href="/$1">#$1</a>');
# => "<a href="/sun">#sun</a><a href="/summer">#summer</a>"

答案 1 :(得分:1)

对于第二个,你可以试试下面的正则表达式,

(^|\b)#([^#]+)

DEMO

您的代码将是,

> var str = '#sun#summer';
> str.replace(/(^|\b)#([^#]+)/g, '$1<a href="/$2">#$2</a>');
'<a href="/sun">#sun</a><a href="/summer">#summer</a>'