我想用@j {名}用<b>
标签开头的大海捞针包围所有单词。我会用什么模式?
答案 0 :(得分:9)
var sample = "@sample";
sample = sample.replace(/(^|\s|-)+@(\w+)/g, "<b>$&</b>");
//^^that's assuming you want the @ to stay
//if not, use $2 instead of $&
$&
插入匹配的子字符串。
使用功能:
var sample = "@sample";
sample = sample.replace(/(^|\s|-)+@(\w+)/g, function(str) {
return "<b>"+str+"</b>";
}
当您想要拥有更好或更精细的控制时,使用函数是个好主意。您可能想要处理当前匹配的部分。无论你想要什么。
查看更多here at MDC。
答案 1 :(得分:0)
乔治的例子将匹配@之后的所有内容,包括some@email.com。 尝试:
function BoldMyText(text) {
var words = text.split(" ");
var returnText = '';
for(var i=0;i<words.length;i++) {
word = words[i].replace(/^@(\w+)/, '<b>$1</b>');
returnText += ' ' + word;
}
return returnText;
}
var myBoldedText = BoldMyText("You should @not bold my@email.com");
如果它不是你想要的。