Javascript 如何在文本内容周围添加HTML标记?

Javascript 如何在文本内容周围添加HTML标记?,javascript,jquery,replace,find,Javascript,Jquery,Replace,Find,我有一个段落有2个或更多标签: <p>#tag1 #tag2</p> #tag1#tag2 现在,我想找到所有标记并按如下方式包装它们: <p><span class="someClass">#tag1</span> <span class="someClass">#tag2</span></p> #tag1#tag2 $('p:contains(#))。每个(函数(){ var tags=$

我有一个段落有2个或更多标签:

<p>#tag1 #tag2</p>
#tag1#tag2

现在,我想找到所有标记并按如下方式包装它们:

<p><span class="someClass">#tag1</span> <span class="someClass">#tag2</span></p>
#tag1#tag2

$('p:contains(#))。每个(函数(){
var tags=$(this.text().split(“”);
var-u标签=“”;
tags.forEach(函数(tag){
包装的标签+=''+标签+'';
});
$(this).html(包装的标签);
});
.someClass{
颜色:红色;
}

#tag1#tag2

$('p:contains(#))。每个(函数(){
var tags=$(this.text().split(“”);
var-u标签=“”;
tags.forEach(函数(tag){
包装的标签+=''+标签+'';
});
$(this).html(包装的标签);
});
.someClass{
颜色:红色;
}

#tag1#tag2

您可以将
.html()
与传递当前值的回调一起使用,并使用正则表达式:

#\w+\b
这意味着:匹配任何以a开头的单词#

$(“p”).html(函数(索引,html){
返回html.replace(/(\\\\\w+\b)/g,“$1”)
});
span{color:orange}

#tag1#tag2

下面是另一个#tag3

您可以将
.html()
与传递当前值的回调一起使用,并使用正则表达式:

#\w+\b
这意味着:匹配任何以a开头的单词#

$(“p”).html(函数(索引,html){
返回html.replace(/(\\\\\w+\b)/g,“$1”)
});
span{color:orange}

#tag1#tag2


这里还有另一个#tag3

这也将包装非“标签”(尽管在问题中不清楚是否只有标签或混合)@freedomn-m是的,我假设op意味着有许多Pharmagraps,其中一些只有标签inside@freedomn-不管怎样,你的答案是better@Sojtin谢谢,但是循环版本总是有余地的。一些jquery命令(如map和html(回调)以及regex)可能不太明显,并且有一个更明确的版本是有益的。这也将包装非“标记”(尽管在问题中不清楚是否只有标记或混合)@freedomn-m yep,我假设op的意思是有很多Pharmagraps,其中一些只有标签inside@freedomn-不管怎样,你的答案是better@Sojtin谢谢,但是循环版本总是有余地的。一些jquery命令(比如map和html(回调)以及regex)可能不太明显,并且有一个更明确的版本是有益的。