我需要多次以:
替换,
和|
之间的所有内容。
我有一个像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
。
如何更换每次出现?
答案 0 :(得分:5)
/:.*,/
贪婪地匹配:127.0.0.1,server2:127.0.0.2
。请记住,像*
这样的量词会尽可能地匹配 ,同时仍允许模式的其余部分匹配。
考虑指定[^,]
而不是.
。这将排除逗号匹配,因此将匹配限制为您要删除的区域。
resultList = serverList.replace(/:[^,]*,/g, '|')
答案 1 :(得分:2)
您可以使用?
(与尽可能少的字符匹配)进行懒惰的处理。
var string = 'server1:127.0.0.1,server2:127.0.0.2,server3:127.0.0.3';
console.log(string.replace(/:.*?(,|$)/g, '|'));