2

在我的项目中,我试图突出显示一个文本(仅用户名),只要用@. 我正在使用以下功能:

function replaceMessage(data, username) {
    return data.replace("@" + username, "<strong>@" + username + "</strong>");
}

上面的这个函数是有效的,但是如果有两个有效的用户名为“Sam”和“Samuel”,那么应用函数后的结果会变成这样:

           SamSamuel (而不是Samuel)。

如何解决这个问题?

我不太擅长使用正则表达式,我尝试了以下在 IE8 中不起作用的函数。

function replaceMessage(data, username) {
    return data.replace(/\b + "@" + username + /g, "<strong>@" + username + "</strong>");
}
4

1 回答 1

3

您将需要\b在正则表达式中表示分词的特殊符号:

function replaceMessage(data, username) {
    var re = new RegExp('@' + username + '\\b', 'g');
    return data.replace(re, "<strong>$0</strong>");
}
于 2013-01-10T10:58:53.977 回答