我目前使用正则表达式链接主题标签,如下所示:
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"
但仅适用于#
答案 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)#([^#]+)
您的代码将是,
> var str = '#sun#summer';
> str.replace(/(^|\b)#([^#]+)/g, '$1<a href="/$2">#$2</a>');
'<a href="/sun">#sun</a><a href="/summer">#summer</a>'