在我的项目中,每当用@
表示时,我都会尝试突出显示文本(仅限用户名)。我正在使用以下功能:
function replaceMessage(data, username) {
return data.replace("@" + username, "<strong>@" + username + "</strong>");
}
上述功能正在运行,但如果有两个有效用户名称如“Sam”和“Samuel”,则应用功能后的结果将变为如下所示:
Sam
和 Sam
uel (而不是Samuel
)。
如何解决这个问题?
我使用正则表达式并不是很好,我尝试了以下在IE8中无效的功能..
function replaceMessage(data, username) {
return data.replace(/\b + "@" + username + /g, "<strong>@" + username + "</strong>");
}
答案 0 :(得分:3)
您将需要特殊符号\b
,表示正则表达式中的单词分隔符:
function replaceMessage(data, username) {
var re = new RegExp('@' + username + '\\b', 'g');
return data.replace(re, "<strong>$0</strong>");
}