我有一个变量:
var str = "@devtest11 @devtest1";
我用以下方法将
@devtest1
替换为另一个字符串:str.replace(new RegExp('@devtest1', 'g'), "aaaa")
然而,它的结果(
aaaa1 aaaa
)并不是我期望的结果。期望的结果应该是:@devtest11 aaaa
。我只想替换整个单词@devtest1
。您怎么做到?我有一个变量:
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);
hello@devtest1
的相关编程内容。 - Anirudhahello@devtest1
:) - Amadan@devtest11
不是一个单词的情况下不准确地使用“整个单词”)。 - Amadan\b
将无法正常工作。我建议使用以下方法。var output=str.replace('(\s|^)@devtest1(?=\s|$)','$1aaaa');
hello@devtest1
,这不是操作者期望的。 - Anirudhaa b$cd e
正在读取变量$cd
,而a
,b
和e
是单独的标记,这是此情况的正确行为。我更喜欢不解决不需要解决的问题。 - Amadan