我有一个变量:

var str = "@devtest11 @devtest1";

我用这种方式用另一个字符串替换@devtest1:
str.replace(new RegExp('@devtest1', 'g'), "aaaa")

但是,其结果(aaaa1 aaaa)不是我期望的。预期的结果是:@devtest11 aaaa。我只想替换整个单词@devtest1

我怎样才能做到这一点?

最佳答案

使用\b零宽度字边界断言。

var str = "@devtest11 @devtest1";
str.replace(/@devtest1\b/g, "aaaa");
// => @devtest11 aaaa

如果还需要防止匹配hello@devtest1这样的情况,则可以执行以下操作:
var str = "@devtest1 @devtest11 @devtest1 hello@devtest1";
str.replace(/( |^)@devtest1\b/g, "$1aaaa");
// => @devtest11 aaaa

10-06 11:32