Javascript 用正则表达式替换缩写

Javascript 用正则表达式替换缩写,javascript,regex,Javascript,Regex,我有JavaScript中的字符串,其中可能包含缩写。我需要一个正则表达式来可靠地替换这些缩写。我不太擅长正则表达式,所以我需要一些帮助。下面是一个简单的例子: var string1="Home in the USA"; var string2="SOME USABILITY..."; var string3="The USA is home"; string1.replace(/USA/,"United States of America") 对于三个可能的字符串,我想用“美利坚合众国”替

我有JavaScript中的字符串,其中可能包含缩写。我需要一个正则表达式来可靠地替换这些缩写。我不太擅长正则表达式,所以我需要一些帮助。下面是一个简单的例子:

var string1="Home in the USA";
var string2="SOME USABILITY...";
var string3="The USA is home";
string1.replace(/USA/,"United States of America")
对于三个可能的字符串,我想用“美利坚合众国”替换“USA”,但我不想让它触及第二个字符串,因为它显然是一个不同的单词。因此,我需要一个正则表达式,只有当下面的字符是空格或无空格时,它才会替换匹配的缩写。任何帮助都将不胜感激。

TL;DR:
/(?:\s)USA(?:\s)/
,但请查看底部更复杂的函数


如果要检查以下字符是否为空格,只需添加一个前瞻,如下所示:

const strs=[
“美国是一个国家”,
“他们说美国在那里”,
“我们在美国”,
“一些可用性”
];
常量模式=/USA(?:\s)/;
const replacement=‘美利坚合众国’;

log(strs.map(str=>str.replace(pattern,replacement))您需要为此使用单词边界。简单的正则表达式是:
/\bUSA\b/g

这意味着在USA之前或之后必须有一个单词边界。另外需要注意的是,这是一个全局正则表达式,因此它将用单词边界代替每次出现的“USA”,而不仅仅是第一次。查看此注册表:


使用
\b
检查您缺少单词边界点。您相当丑陋的(?:\s |^)和(?:\s |$)非捕获捕获组可以简单地替换为\b(单词边界)。此外,您的正则表达式不是全局的,因此您的替换将只替换第一次出现的正则表达式。对不起,我不得不投反对票。