我试图在包含@ char。
的单词周围添加span标签+ classname我的当前代码只返回一个真值,如果找到它,遗憾的是我不知道如何添加标签+ classname。什么是正确的方法呢?
var string = "hello @peter how are you?", substring = "@";
if (string.indexOf(substring) > -1){
//add span tag + classname around @peter
}
endresult应该将变量更改为:
var string = "hello <span class='mentioned'>@peter</span> how are you?"
答案 0 :(得分:2)
一种选择是使用.replace()
方法。表达式(@\S+)
是一个捕获组,字面上匹配@
字符,后跟一个或多个非空白字符。由于$1
代表第一个捕获组,因此匹配将简单地替换为<span class='mentioned'>$1</span>
,这基本上会包含匹配。
var string = "hello @peter how are you?";
string = string.replace(/(@\S+)/g, "<span class='mentioned'>$1</span>");
// "hello <span class='mentioned'>@peter</span> how are you?"
但是,根据输入,使用\w
而不是\S
实际上可能更好。这样做时,只匹配字符[A-Za-z0-9_]
(而不是除了任何非空白字符之外的所有)。
例如:
var string = "hello @peter97... how are you?";
string = string.replace(/(@\w+)/g, "<span class='mentioned'>$1</span>");
// "hello <span class='mentioned'>@peter97</span>... how are you?"