例如,如果有 2 个或更多
:0000:
的序列,那么我喜欢将它们替换为 :.
在下面的代码中,结果应该是
2a00:1450:4028:805::00001111:2005
,但它只是忽略了替换,所以我猜它需要先行。
顺便说一句,如果它只是一个
:0000:
那么它应该替换为 :0:
,但是一旦真正的问题得到解决,这应该相当容易。请注意,我故意使用 00001111
以确保它不会被替换。
let str = document.getElementById("input").textContent;
let res = str.replace(/(:0000:){2,}/g, ":");
document.getElementById("output").textContent = res;
Before:
<p id="input">
2A00:1450:4028:080B:0000:0000:00001111:2005
</p>
After
<p id="output">
</p>
问题是您的模式
/(:0000:){2,}
要求每个0000
用::
分隔,而不仅仅是:
,例如:0000::0000::0000:
。您应该在组的开头或结尾有 :
,而不是两者都出现。然后你可以匹配量化组之外的另一个:
。
如果您想在结果中使用
::
,则应该在替换中使用它,而不仅仅是 :
。
let str = document.getElementById("input").textContent;
let res = str.replace(/(:0000){2,}:/g, "::");
document.getElementById("output").textContent = res;
Before:
<p id="input">
2A00:1450:4028:080B:0000:0000:00001111:2005
</p>
After
<p id="output">
</p>