Regex 字符串是有效IPv6的前缀

Regex 字符串是有效IPv6的前缀,regex,ipv6,Regex,Ipv6,我正在处理自动完成任务,我想检查给定字符串是否是有效IPv6地址的前缀。 例如,字符串“2001:”是此ipv6地址“2001:db8::2:1”的前缀,也可以是此ipv6地址“2001:a8::4:c”的前缀。 如果字符串是某个有效IPv6的前缀,则我的函数应返回true。 我在互联网上搜索了一下,只找到了IPv6验证。 感谢基本上,IPV6地址的前64位被视为网络前缀。您可以使用下面的正则表达式来验证网络前缀 var valueToTest=document.getElementById('

我正在处理自动完成任务,我想检查给定字符串是否是有效IPv6地址的前缀。 例如,字符串“2001:”是此ipv6地址“2001:db8::2:1”的前缀,也可以是此ipv6地址“2001:a8::4:c”的前缀。 如果字符串是某个有效IPv6的前缀,则我的函数应返回true。 我在互联网上搜索了一下,只找到了IPv6验证。
感谢

基本上,IPV6地址的前64位被视为网络前缀。您可以使用下面的正则表达式来验证网络前缀

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");
}

您是否正在寻找一个正则表达式来匹配以2000开头的字符串:?有效的全局IPv6地址以
2
3
开头,并且在第一个单词中有四个十六进制数字。如果你想考虑像ULA这样的事情,它会变得更复杂。@ SnIPRD 2000:只是一个例子。RoMouuin我在寻找一个可以告诉我一个给定的字符串是否是任何可能的IPv6地址的前缀的例子,例如,如果输入字符串是x,然后我想知道是否存在一个字符串Y,使得X+Y=有效的ipv6地址“有效的ipv6地址”是什么意思?从一个角度来看,任何128位整数都是有效的ipv6地址。你的意思是它可以是源地址、目标地址、可转发地址、全局地址、多播地址等吗。?您必须首先定义有效地址的含义。“基本上,IPV6地址的前64位被视为网络前缀。”这并不完全准确。标准的IPv6网络是
/64
。RIR和ISP将分配小于
/64
的前缀。例如,每个站点应分配一个
/48
前缀,该前缀可分为
65536
标准
/64
网络(我们有一个
/32
前缀)。ISP不会公布任何长度超过
/48
的前缀。一些住宅ISP将分配
/56
/60
前缀。您可以而且应该为点到点链接使用
/127
前缀,为路由器环回之类的东西使用
/128
前缀。