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

Javascript 正则表达式查找以#开头直到空格的字符串,javascript,jquery,regex,tagging,Javascript,Jquery,Regex,Tagging,我正在尝试获取元素中以#开头的任何字符串,以启动虚拟标记系统。基本上 #你好 #再见 #下午好 然后会显示为 hello 再见 好 这是我到目前为止的正则表达式 /#^\s/ 我不太擅长正则表达式,尽管我相信^\s是我想要的文本,直到空白 HTML示例: <div class="content"> <div>Hello everyone today we are going to be discussing #world_views , <br />

我正在尝试获取元素中以
#
开头的任何字符串,以启动虚拟标记系统。基本上

#你好
#再见
#下午好

然后会显示为

hello
再见

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

/#^\s/
我不太擅长正则表达式,尽管我相信
^\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>

大家好,今天我们将讨论世界观,
请欣赏#user2今天的讨论
我想让它变成

<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>

大家好,今天我们要讨论的是
,
请大家欣赏今天的讨论
到目前为止的完整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>');
    });
   }
 });
$(函数(){
var i,论坛={
phpbb2:“.postbody”,
phpbb3:“.post.content”,
punbb:“.条目内容”,
invision:“.postbody”
},
yourVersion=“phpbb3”;
对于(i=0;i您正在查找“任何不是空格字符的内容,一次或多次”,在正则表达式中,它看起来像:

\S+
因此,对于您的正则表达式,它将是:

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

/#(\S+)/
现在,捕获组#1将包含hashtag的文本,而不包含hash符号。

您正在查找“任何不是空白字符的内容,一次或多次”,在regex中,它看起来像:

\S+
因此,对于您的正则表达式,它将是:

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

/#(\S+)/

现在,捕获组#1将包含hashtag的文本,而不包含hash符号。

在JavaScript中,您创建一个新的RegExp对象,然后对其进行测试

这样的办法应该行得通

var string = $("#some_id").val();
var regexp = new RegExp("/#^\S+/");

if (regexp.test(string) === true) {
     // do something here
     return true; // optional
}
else {
     // do something else here
     return false; // optional
}

在JavaScript中,创建一个新的RegExp对象,然后对其进行测试

这样的办法应该行得通

var string = $("#some_id").val();
var regexp = new RegExp("/#^\S+/");

if (regexp.test(string) === true) {
     // do something here
     return true; // optional
}
else {
     // do something else here
     return false; // optional
}

使用正则表达式的最佳方法是首先在正则表达式测试环境(如“”中)中测试它们

上面的示例“/#(\S+/”将给出以下结果: 总结:

预赛(“/”(\S+/”,“#你好#再见#下午好”,$arr,预赛模式(订单)); 返回的函数

int(3) int(3) 结果集:

Array ( [0] => Array ( [0] => #hello [1] => #goodbye [2] => #good ) [1] => Array ( [0] => hello [1] => goodbye [2] => good ) ) 排列 ( [0]=>阵列 ( [0]=>#你好 [1] =>#再见 [2] =>#很好 ) [1] =>阵列 ( [0]=>您好 [1] =>再见 [2] =>很好 ) )
我希望这会有所帮助。

使用regex的最佳方法是首先在诸如“”之类的regex测试环境中测试它们

上面的示例“/#(\S+/”将给出以下结果: 总结:

预赛(“/”(\S+/”,“#你好#再见#下午好”,$arr,预赛模式(订单)); 返回的函数

int(3) int(3) 结果集:

Array ( [0] => Array ( [0] => #hello [1] => #goodbye [2] => #good ) [1] => Array ( [0] => hello [1] => goodbye [2] => good ) ) 排列 ( [0]=>阵列 ( [0]=>#你好 [1] =>#再见 [2] =>#很好 ) [1] =>阵列 ( [0]=>您好 [1] =>再见 [2] =>很好 ) )
我希望这能有所帮助。

好的,我用我已经启动的文档化JS尝试了这一点,但它不起作用……顺便说一句,
/#(.*)我也尝试了这一点?\s+/
@EasyBB-什么不起作用?你确定你正在执行全局匹配吗?第二个执行捕获组时,它起作用了。虽然$1不起作用。抱歉,全局匹配?你的意思是我应该先测试它,然后再执行全局匹配work@EasyBB-当您介绍捕获组时,
$1
应该可以使用。如果需要,我需要更多详细信息ill不起作用。好的,我用我已经启动的文档化JS尝试了这个,但它不起作用…顺便说一句,
/#(.*)我也尝试了这个?\s+/
@EasyBB-什么不起作用?你确定你正在执行全局匹配吗?第二个执行捕获组时,它起作用了。虽然$1不起作用。抱歉,全局匹配?你的意思是我应该先测试它,然后再执行全局匹配work@EasyBB-当您介绍捕获组时,
$1
应该可以使用。如果需要,我需要更多详细信息病不起作用。