在字符串内的单词周围添加标记+类名

时间:2016-01-03 22:25:08

标签: javascript

我试图在包含@ 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?"

1 个答案:

答案 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?"