JavaScript regex替换整个单词

JavaScript regex to replace a whole word

本文关键字:单词 替换 regex JavaScript      更新时间:2023-09-26

我有一个变量:

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

使用词边界'b限制对词的搜索。

由于@是一个特殊字符,所以需要在字外进行匹配。

'b断言位置在字边界(^'w|'w$|'W'w|'w'W),因为'b不包含特殊字符。

var str = "@devtest11 @devtest1";
str = str.replace(/@devtest1'b/g, "aaaa");
document.write(str);

如果您的字符串总是以@开头,并且您不希望其他字符匹配

var str = "@devtest11 @devtest1";
str = str.replace(/('s*)@devtest1'b/g, "$1aaaa");
//                 ^^^^^                ^^
document.write(str);

'b将无法正常工作,如果单词被非空格字符包围,我建议使用以下方法

var output=str.replace('('s|^)@devtest1(?='s|$)','$1aaaa');