代码之家  ›  专栏  ›  技术社区  ›  radicaled

在javascript中多次替换子字符串

  •  1
  • radicaled  · 技术社区  · 6 年前

    我需要更换 : , 用一个 | 多次。
    我有一个服务器列表 server1:127.0.0.1,server2:127.0.0.2,server3:127.0.0.3 .

    基本上,我需要删除所有IP并用一些 γ .

    到目前为止,我能做到这一点:

    resultList = serverList.replace(/:.*,/g, '|')
    

    问题是结果列表是 server1|server3:127.0.0.3 .

    我怎样才能替换每一个事件?

    2 回复  |  直到 6 年前
        1
  •  5
  •   Mamun    6 年前

    /:.*,/ 贪婪地匹配 :127.0.0.1,server2:127.0.0.2 。记住量词像 * 将匹配 尽可能多 同时仍然允许模式的其余部分匹配。

    考虑指定 [^,] 而不是 . . 这将从匹配中排除逗号,因此将匹配限制为仅要删除的区域。

    resultList = serverList.replace(/:[^,]*,/g, '|')
    
        2
  •  2
  •   Nina Scholz    6 年前

    你可以采取一种懒惰的方法 ? (尽可能少地匹配字符)。

    var string = 'server1:127.0.0.1,server2:127.0.0.2,server3:127.0.0.3';
    
    console.log(string.replace(/:.*?(,|$)/g, '|'));