如何使用javascript压缩IPV6地址?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用javascript压缩IPV6地址?相关的知识,希望对你有一定的参考价值。
我已经看到了在java中压缩IPV6的代码。 link指定相同。下面是Java中的代码。 String resultString = subjectString.replaceAll("((?::0\b){2,}):?(?!\S*\b\1:0\b)(\S*)", "::$2");
但是在javascript中我很困惑,我怎么能得到正则表达式匹配相同。你能在这里分享一些指示吗?
示例:fe80:00:00:00:8e3:a11a:2a49:1148结果:fe80 :: 8e3:a11a:2a49:1148
答案
你可以通过替换来做到这一点
(?:0+:){2,}
同
:
function compIPV6(input) {
return input.replace(/(?:0+:){2,}/, ':');
}
document.write(compIPV6('2001:db8:0:0:0:0:2:1') + '<br/>');
document.write(compIPV6('fe80:00:00:00:8e3:a11a:2a49:1148' + '<br/>'));
另一答案
@ClasG的另一个答案有几个问题:
- 如果重复的零位于IPv6地址的开头或全为零,则仅替换1个冒号。
- 如果重复的零在最后,它们就不会被替换。
我建议使用正则表达式:?(?:0+:?){2,}
并将其替换为::
(两个冒号)
JavaScript示例:
var ips = [
'2001:0db8:ac10:0000:0000:0000:0000:ffff',
'2001:0db8:ac10:0000:0000:0000:0000:0000',
'0:0:0:0:0:2001:0db8:ac10',
'2001:0db8:ac10:aaaa:0000:bbbb:cccc:ffff',
'2001:0db8:ac10:0000:0000:bbbb:00:00'
];
for (var i = 0; i < ips.length; i++) {
document.write(ips[i].replace(/:?(?:0+:?){2,}/, '::') + "<br>");
}
以上是关于如何使用javascript压缩IPV6地址?的主要内容,如果未能解决你的问题,请参考以下文章