如何在 javascript 中验证 IPV6 网络前缀

How to validate IPV6 network prefix in javascript

我正在尝试验证某些 IPV6 网络前缀以创建子网。我无法使用 JavaScript 正则表达式验证网络前缀。谁能帮忙

部分网络前缀格式如下

2001:0000:1234:0000 
2001:0:1234:0
3ffe:0b00::
3ffe:b00::1
FF02::
FF02::1
::1
::
::ffff:192
3ffe:0b00:0000:0001
FF02:0000:0000:0000
FF02::
ff02::1 
fe80::

现在我可以使用下面的一组代码来验证网络前缀。

var valueToTest=document.getElementById('networkprefix').value;

if ( /^((?:[0-9A-Fa-f]{1,4}))*:((?:[0-9A-Fa-f]{1,4}))*:((?:[0-9A-Fa-f]{1,4}))*:((?:[0-9A-Fa-f]{1,4}))$/g.test(valueToTest)) 
{
    alert("Valid Network Prefix");

}
else
{
    alert("InValid Network Prefix");
}

您提供的答案不足以正确验证文本表示的所有有效 IPv6 地址格式。

如果您想捕获任何有效的 RFC 4291, IP Version 6 Addressing Architecture 格式,那么您需要一个正则表达式,例如:

^(?:(?:(?:[A-F0-9]{1,4}:){5}[A-F0-9]{1,4}|(?:[A-F0-9]{1,4}:){4}:[A-F0-9]{1,4}|(?:[A-F0-9]{1,4}:){3}(?::[A-F0-9]{1,4}){1,2}|(?:[A-F0-9]{1,4}:){2}(?::[A-F0-9]{1,4}){1,3}|[A-F0-9]{1,4}:(?::[A-F0-9]{1,4}){1,4}|(?:[A-F0-9]{1,4}:){1,5}|:(?::[A-F0-9]{1,4}){1,5}|:):(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])|(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}|(?:[A-F0-9]{1,4}:){6}:[A-F0-9]{1,4}|(?:[A-F0-9]{1,4}:){5}(?::[A-F0-9]{1,4}){1,2}|(?:[A-F0-9]{1,4}:){4}(?::[A-F0-9]{1,4}){1,3}|(?:[A-F0-9]{1,4}:){3}(?::[A-F0-9]{1,4}){1,4}|(?:[A-F0-9]{1,4}:){2}(?::[A-F0-9]{1,4}){1,5}|[A-F0-9]{1,4}:(?::[A-F0-9]{1,4}){1,6}|(?:[A-F0-9]{1,4}:){1,7}:|:(?::[A-F0-9]{1,4}){1,7}|::)$