正则表达式查找以#开头的字符串直到空格

Eas*_*yBB 0 javascript regex jquery tagging

我试图在一个元素中获取任何字符串,#以获得一个虚拟标记系统.基本上

#hello #goodbye #good afternoon

然后会显示为

hello goodbye good

这是我到目前为止的正则表达式

/#^\s/
Run Code Online (Sandbox Code Playgroud)

我不是很擅长正则表达式,虽然我相信^\s是我想要的文本直到空白.

示例HTML:

<div class="content">
 <div>Hello everyone today we are going to be discussing #world_views , <br />
  Please enjoy today's discussing by #user2
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望它变成什么

<div class="content">
 <div>Hello everyone today we are going to be discussing 
    <a href="/search&keywords=world%20views">#world_views</a> , <br />
  Please enjoy today's discussing by <a href="/search&keywords=user2>#user2</a>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

到目前为止完整的JavaScript:

$(function() {
   var i,forum={
     phpbb2:'.postbody',
     phpbb3:'.post .content',
     punbb:'.entry-content',
     invision:'.postbody'
    },
  yourVersion="phpbb3";

 for (i=0;i<forum[yourVersion].length;i++){
     $(forum[yourVersion][i]).html(function() {
     return $(this)
             .html()
             .replace(
                 /#^\s/,
                '<a href="/search&keywords='+$1.replace("#","")+'">$1</a>');
    });
   }
 });
Run Code Online (Sandbox Code Playgroud)

nic*_*ckb 10

你正在寻找"正则表达式"中的"任何不是空白字符,一次或多次"的东西,如下所示:

\S+
Run Code Online (Sandbox Code Playgroud)

所以,对于你的正则表达式,它将是:

/#\S+/
Run Code Online (Sandbox Code Playgroud)

您还可以考虑使用仅包含\S+匹配文本的捕获组,如下所示:

/#(\S+)/
Run Code Online (Sandbox Code Playgroud)

现在捕获组#1将包含主题标签的文本,没有井号.