如何替换除JavaScript中第一个字符串之外的所有字符串?

kar*_*ess 8 javascript regex string node.js

我有这个字符串:

hello world hello world hello world hello
Run Code Online (Sandbox Code Playgroud)

我需要得到以下内容:

hello world hello hello hello
Run Code Online (Sandbox Code Playgroud)

如果我使用:

str = str.replace('world', '');
Run Code Online (Sandbox Code Playgroud)

它只删除world上面字符串中的第一个匹配项.

如何替换除第一个之外的所有事件?

Kri*_*itk 14

您可以将函数传递给String#replace,您可以在其中指定省略替换第一个匹配项.还要制作第一个替换正则表达式的参数以匹配所有出现次数.

演示

let str = 'hello world hello world hello world hello',
    i = 0;
    
str = str.replace(/world/g, m  => !i++ ? m : '');
console.log(str);
Run Code Online (Sandbox Code Playgroud)

注意

您可以i通过使用IIFE避免使用全局计数器变量:

let str = 'hello world hello world hello world hello';

str = str.replace(/world/g, (i => m => !i++ ? m : '')(0));
console.log(str);
Run Code Online (Sandbox Code Playgroud)