Javascript Regex将匹配Twitter中的提及和标签

Javascript Regex将匹配Twitter中的提及和标签,javascript,regex,Javascript,Regex,我这里有一个JS: return text.replace(/@([a-z\d_]+)/ig, '<a href="?r=site/twitterprofile&q=$1">@$1</a>'); 如何将这两种模式组合成一种模式 您可以利用.replace()函数允许您传入函数以返回替换字符串: return text.replace(/@([a-z\d_]+)/ig, '<a href="?r=site/twitterprofile&q=$1"&g

我这里有一个JS:

return text.replace(/@([a-z\d_]+)/ig, '<a
href="?r=site/twitterprofile&q=$1">@$1</a>');

如何将这两种模式组合成一种模式

您可以利用
.replace()
函数允许您传入函数以返回替换字符串:

return text.replace(/@([a-z\d_]+)/ig, '<a
href="?r=site/twitterprofile&q=$1">@$1</a>');
return text.replace(/([@#])([a-z\d_]+)/ig, function(_, marker, tag) {
  if (marker === "@")
    return '<a href="?r=site/twitterprofile&q=$1">' + tag + '</a>';
  return "Hashtag: " + tag;
});
返回文本。替换(/([@#])([a-z\d#+)/ig,函数(#,标记,标记){
如果(标记==“@”)
返回“”;
返回“Hashtag:”+标签;
});

它查找类似于
@
标记或hashtags的内容,然后决定返回哪种替换。将函数传递给
.replace()
时,将调用该函数,以便第一个参数(在上面的示例中被忽略)是整个匹配项。第二个和后续参数包含分组的子匹配项,在使用简单字符串替换时对应于
$1
$2
等。因此,第一组是
@
#
字符,第二组是匹配的文本。

为什么要使用
替换
?您只希望@references中包含哈希标记?只需按顺序应用它们。
return text.replace(/@([a-z\d_]+)/ig, '<a
href="?r=site/twitterprofile&q=$1">@$1</a>');