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
应该可以使用。如果需要,我需要更多详细信息病不起作用。