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



我目前正在使用如下regex链接标签:

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"

但仅适用于# 之后的一个字符

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

对于第二个,您可以尝试下面的regex,

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

演示

你的代码是

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

最新更新