/\b(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9-]*[A-Za-z0-9])\b/g
Excerpt from RFC3330 (IANA, September 2002)
Summary Table
Address Block Present Use Reference
----------------------------------------------------------------------
0.0.0.0/8 "This" Network [RFC1700, page 4]
10.0.0.0/8 Private-Use Networks [RFC1918]
14.0.0.0/8 Public-Data Networks [RFC1700, page 181]
24.0.0.0/8 Cable Television Networks --
39.0.0.0/8 Reserved but subject
to allocation [RFC1797]
127.0.0.0/8 Loopback [RFC1700, page 5]
128.0.0.0/16 Reserved but subject
to allocation --
169.254.0.0/16 Link Local --
172.16.0.0/12 Private-Use Networks [RFC1918]
191.255.0.0/16 Reserved but subject
to allocation --
192.0.0.0/24 Reserved but subject
to allocation --
192.0.2.0/24 Test-Net
192.88.99.0/24 6to4 Relay Anycast [RFC3068]
192.168.0.0/16 Private-Use Networks [RFC1918]
198.18.0.0/15 Network Interconnect
Device Benchmark Testing [RFC2544]
223.255.255.0/24 Reserved but subject
to allocation --
224.0.0.0/4 Multicast [RFC3171]
240.0.0.0/4 Reserved for Future Use [RFC1700, page 4]
List of reserved /8 blocks[edit]
Block Organization IANA date RIR date Notes
0.0.0.0/8 IANA - Local Identification 1981-09 Originally IANA - Reserved 1981-09. 0.0.0.0/8 reserved for self-identification (RFC 6890).
10.0.0.0/8 IANA - Private Use 1995-06 Reserved for Private-Use Networks (RFC 1918). Formerly ARPANET.[1]
127.0.0.0/8 IANA - Loopback 1981-09 127.0.0.0/8 is reserved for Loopback (RFC 6890).
224.0.0.0/8–239.0.0.0/8 Multicast 1981-09 1991-05-22 Multicast (formerly "Class D") (RFC 5771) registered in [1]. 224.0.0.0/4.
240.0.0.0/8–255.0.0.0/8 Future Use 1981-09 Reserved for future use (formerly "Class E") (RFC 1112). 255.255.255.255 is reserved for "limited broadcast" destination address (RFC 919) and (RFC 922). 240.0.0.0/4.
10.10.1.97/23
IP Address 10.10.1.97/23 belongs to the 10.10.0.0/23 Network. The network Address is 10.10.0.0 and the Broadcast Address is 10.10.1.255.
192.168.0.3/25
IP Address 192.168.0.3/25 belongs to the 192.168.0.0/25 Network. The network Address is 192.168.0.0 and the Broadcast Address is 192.168.0.127.
172.16.5.34/26
IP Address 172.16.5.34/26 belongs to the 172.16.5.0/26 Network. The network Address is 172.16.5.0 and the Broadcast Address is 172.16.5.63.
192.168.11.17/28
IP Address 192.168.11.17/28 belongs to the 192.168.11.16/28 Network. The network Address is 192.168.11.16 and the Broadcast Address is 192.168.11.31.
Class A
0--- : If the first bit of an IPv4 address is "0", this means that the address is part of class A. This means that any address from 0.0.0.0 to 127.255.255.255 is in class A.
Class B
10-- : Class B includes any address from 128.0.0.0 to 191.255.255.255. This represents the addresses that have a "1" for their first bit, but don't have a "1" for their second bit.
Class C
110- : Class C is defined as the addresses ranging from 192.0.0.0 to 223.255.255.255. This represents all of the addresses with a "1" for their first two bits, but without a "1" for their third bit.
Class D
1110 : This class includes addresses that have "111" as their first three bits, but a "0" for the next bit. This address range includes addresses from 224.0.0.0 to 239.255.255.255.
Class E
1111 : This class defines addresses between 240.0.0.0 and 255.255.255.255. Any address that begins with four "1" bits is included in this class.
Prefix Designation Date WHOIS RDAP Status [1] Note
000/8 IANA - Local Identification 1981-09 RESERVED [2]
001/8 APNIC 2010-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
002/8 RIPE NCC 2009-09 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
003/8 General Electric Company 1994-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
004/8 Level 3 Communications, Inc. 1992-12 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
005/8 RIPE NCC 2010-11 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
006/8 Army Information Systems Center 1994-02 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
007/8 Administered by ARIN 1995-04 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
008/8 Level 3 Communications, Inc. 1992-12 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
009/8 IBM 1992-08 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
010/8 IANA - Private Use 1995-06 RESERVED [3]
011/8 DoD Intel Information Systems 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
012/8 AT&T Bell Laboratories 1995-06 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
013/8 Administered by ARIN 1991-09 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
014/8 APNIC 2010-04 whois.apnic.net https://rdap.apnic.net/ ALLOCATED [4]
015/8 Hewlett-Packard Company 1994-07 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
016/8 Digital Equipment Corporation 1994-11 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
017/8 Apple Computer Inc. 1992-07 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
018/8 MIT 1994-01 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
019/8 Ford Motor Company 1995-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
020/8 Computer Sciences Corporation 1994-10 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
021/8 DDN-RVN 1991-07 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
022/8 Defense Information Systems Agency 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
023/8 ARIN 2010-11 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
024/8 ARIN 2001-05 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
025/8 UK Ministry of Defence 1995-01 whois.ripe.net https://rdap.db.ripe.net/ LEGACY
026/8 Defense Information Systems Agency 1995-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
027/8 APNIC 2010-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
028/8 DSI-North 1992-07 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
029/8 Defense Information Systems Agency 1991-07 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
030/8 Defense Information Systems Agency 1991-07 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
031/8 RIPE NCC 2010-05 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
032/8 Administered by ARIN 1994-06 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
033/8 DLA Systems Automation Center 1991-01 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
034/8 Halliburton Company 1993-03 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
035/8 Administered by ARIN 1994-04 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
036/8 APNIC 2010-10 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
037/8 RIPE NCC 2010-11 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
038/8 PSINet, Inc. 1994-09 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
039/8 APNIC 2011-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
040/8 Administered by ARIN 1994-06 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
041/8 AFRINIC 2005-04 whois.afrinic.net https://rdap.afrinic.net/rdap/ ALLOCATED
http://rdap.afrinic.net/rdap/
042/8 APNIC 2010-10 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
043/8 Administered by APNIC 1991-01 whois.apnic.net https://rdap.apnic.net/ LEGACY
044/8 Amateur Radio Digital Communications 1992-07 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
045/8 Administered by ARIN 1995-01 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
046/8 RIPE NCC 2009-09 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
047/8 Administered by ARIN 1991-01 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
048/8 Prudential Securities Inc. 1995-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
049/8 APNIC 2010-08 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
050/8 ARIN 2010-02 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
051/8 Administered by RIPE NCC 1994-08 whois.ripe.net https://rdap.db.ripe.net/ LEGACY
052/8 Administered by ARIN 1991-12 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
053/8 Daimler AG 1993-10 whois.ripe.net https://rdap.db.ripe.net/ LEGACY
054/8 Administered by ARIN 1992-03 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
055/8 DoD Network Information Center 1995-04 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
056/8 US Postal Service 1994-06 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
057/8 Societe Internationale de Telecommunications Aeronautiques 1995-05 whois.ripe.net https://rdap.db.ripe.net/ LEGACY
S.C.R.L.
058/8 APNIC 2004-04 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
059/8 APNIC 2004-04 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
060/8 APNIC 2003-04 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
061/8 APNIC 1997-04 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
062/8 RIPE NCC 1997-04 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
063/8 ARIN 1997-04 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
064/8 ARIN 1999-07 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
065/8 ARIN 2000-07 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
066/8 ARIN 2000-07 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
067/8 ARIN 2001-05 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
068/8 ARIN 2001-06 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
069/8 ARIN 2002-08 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
070/8 ARIN 2004-01 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
071/8 ARIN 2004-08 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
072/8 ARIN 2004-08 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
073/8 ARIN 2005-03 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
074/8 ARIN 2005-06 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
075/8 ARIN 2005-06 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
076/8 ARIN 2005-06 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
077/8 RIPE NCC 2006-08 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
078/8 RIPE NCC 2006-08 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
079/8 RIPE NCC 2006-08 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
080/8 RIPE NCC 2001-04 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
081/8 RIPE NCC 2001-04 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
082/8 RIPE NCC 2002-11 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
083/8 RIPE NCC 2003-11 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
084/8 RIPE NCC 2003-11 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
085/8 RIPE NCC 2004-04 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
086/8 RIPE NCC 2004-04 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
087/8 RIPE NCC 2004-04 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
088/8 RIPE NCC 2004-04 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
089/8 RIPE NCC 2005-06 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
090/8 RIPE NCC 2005-06 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
091/8 RIPE NCC 2005-06 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
092/8 RIPE NCC 2007-03 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
093/8 RIPE NCC 2007-03 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
094/8 RIPE NCC 2007-07 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
095/8 RIPE NCC 2007-07 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
096/8 ARIN 2006-10 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
097/8 ARIN 2006-10 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
098/8 ARIN 2006-10 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
099/8 ARIN 2006-10 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
100/8 ARIN 2010-11 whois.arin.net https://rdap.arin.net/registry ALLOCATED [5]
http://rdap.arin.net/registry
101/8 APNIC 2010-08 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
102/8 AFRINIC 2011-02 whois.afrinic.net https://rdap.afrinic.net/rdap/ ALLOCATED
http://rdap.afrinic.net/rdap/
103/8 APNIC 2011-02 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
104/8 ARIN 2011-02 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
105/8 AFRINIC 2010-11 whois.afrinic.net https://rdap.afrinic.net/rdap/ ALLOCATED
http://rdap.afrinic.net/rdap/
106/8 APNIC 2011-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
107/8 ARIN 2010-02 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
108/8 ARIN 2008-12 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
109/8 RIPE NCC 2009-01 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
110/8 APNIC 2008-11 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
111/8 APNIC 2008-11 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
112/8 APNIC 2008-05 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
113/8 APNIC 2008-05 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
114/8 APNIC 2007-10 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
115/8 APNIC 2007-10 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
116/8 APNIC 2007-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
117/8 APNIC 2007-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
118/8 APNIC 2007-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
119/8 APNIC 2007-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
120/8 APNIC 2007-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
121/8 APNIC 2006-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
122/8 APNIC 2006-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
123/8 APNIC 2006-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
124/8 APNIC 2005-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
125/8 APNIC 2005-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
126/8 APNIC 2005-01 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
127/8 IANA - Loopback 1981-09 RESERVED [6]
128/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
129/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
130/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
131/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
132/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
133/8 Administered by APNIC 1997-03 whois.apnic.net https://rdap.apnic.net/ LEGACY
134/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
135/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
136/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
137/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
138/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
139/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
140/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
141/8 Administered by RIPE NCC 1993-05 whois.ripe.net https://rdap.db.ripe.net/ LEGACY
142/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
143/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
144/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
145/8 Administered by RIPE NCC 1993-05 whois.ripe.net https://rdap.db.ripe.net/ LEGACY
146/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
147/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
148/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
149/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
150/8 Administered by APNIC 1993-05 whois.apnic.net https://rdap.apnic.net/ LEGACY
151/8 Administered by RIPE NCC 1993-05 whois.ripe.net https://rdap.db.ripe.net/ LEGACY
152/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
153/8 Administered by APNIC 1993-05 whois.apnic.net https://rdap.apnic.net/ LEGACY
154/8 Administered by AFRINIC 1993-05 whois.afrinic.net https://rdap.afrinic.net/rdap/ LEGACY
http://rdap.afrinic.net/rdap/
155/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
156/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
157/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
158/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
159/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
160/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
161/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
162/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
163/8 Administered by APNIC 1993-05 whois.apnic.net https://rdap.apnic.net/ LEGACY
164/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
165/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
166/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
167/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
168/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
169/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY [7]
http://rdap.arin.net/registry
170/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
171/8 Administered by APNIC 1993-05 whois.apnic.net https://rdap.apnic.net/ LEGACY
172/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY [8]
http://rdap.arin.net/registry
173/8 ARIN 2008-02 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
174/8 ARIN 2008-02 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
175/8 APNIC 2009-08 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
176/8 RIPE NCC 2010-05 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
177/8 LACNIC 2010-06 whois.lacnic.net https://rdap.lacnic.net/rdap/ ALLOCATED
178/8 RIPE NCC 2009-01 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
179/8 LACNIC 2011-02 whois.lacnic.net https://rdap.lacnic.net/rdap/ ALLOCATED
180/8 APNIC 2009-04 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
181/8 LACNIC 2010-06 whois.lacnic.net https://rdap.lacnic.net/rdap/ ALLOCATED
182/8 APNIC 2009-08 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
183/8 APNIC 2009-04 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
184/8 ARIN 2008-12 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
185/8 RIPE NCC 2011-02 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
186/8 LACNIC 2007-09 whois.lacnic.net https://rdap.lacnic.net/rdap/ ALLOCATED
187/8 LACNIC 2007-09 whois.lacnic.net https://rdap.lacnic.net/rdap/ ALLOCATED
188/8 Administered by RIPE NCC 1993-05 whois.ripe.net https://rdap.db.ripe.net/ LEGACY
189/8 LACNIC 1995-06 whois.lacnic.net https://rdap.lacnic.net/rdap/ ALLOCATED
190/8 LACNIC 1995-06 whois.lacnic.net https://rdap.lacnic.net/rdap/ ALLOCATED
191/8 Administered by LACNIC 1993-05 whois.lacnic.net https://rdap.lacnic.net/rdap/ LEGACY
192/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY [9][10]
http://rdap.arin.net/registry
193/8 RIPE NCC 1993-05 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
194/8 RIPE NCC 1993-05 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
195/8 RIPE NCC 1993-05 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
196/8 Administered by AFRINIC 1993-05 whois.afrinic.net https://rdap.afrinic.net/rdap/ LEGACY
http://rdap.afrinic.net/rdap/
197/8 AFRINIC 2008-10 whois.afrinic.net https://rdap.afrinic.net/rdap/ ALLOCATED
http://rdap.afrinic.net/rdap/
198/8 Administered by ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry LEGACY [11]
http://rdap.arin.net/registry
199/8 ARIN 1993-05 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
200/8 LACNIC 2002-11 whois.lacnic.net https://rdap.lacnic.net/rdap/ ALLOCATED
201/8 LACNIC 2003-04 whois.lacnic.net https://rdap.lacnic.net/rdap/ ALLOCATED
202/8 APNIC 1993-05 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
203/8 APNIC 1993-05 whois.apnic.net https://rdap.apnic.net/ ALLOCATED [12]
204/8 ARIN 1994-03 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
205/8 ARIN 1994-03 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
206/8 ARIN 1995-04 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
207/8 ARIN 1995-11 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
208/8 ARIN 1996-04 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
209/8 ARIN 1996-06 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
210/8 APNIC 1996-06 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
211/8 APNIC 1996-06 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
212/8 RIPE NCC 1997-10 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
213/8 RIPE NCC 1993-10 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
214/8 US-DOD 1998-03 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
215/8 US-DOD 1998-03 whois.arin.net https://rdap.arin.net/registry LEGACY
http://rdap.arin.net/registry
216/8 ARIN 1998-04 whois.arin.net https://rdap.arin.net/registry ALLOCATED
http://rdap.arin.net/registry
217/8 RIPE NCC 2000-06 whois.ripe.net https://rdap.db.ripe.net/ ALLOCATED
218/8 APNIC 2000-12 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
219/8 APNIC 2001-09 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
220/8 APNIC 2001-12 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
221/8 APNIC 2002-07 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
222/8 APNIC 2003-02 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
223/8 APNIC 2010-04 whois.apnic.net https://rdap.apnic.net/ ALLOCATED
224/8 Multicast 1981-09 RESERVED [13]
225/8 Multicast 1981-09 RESERVED [13]
226/8 Multicast 1981-09 RESERVED [13]
227/8 Multicast 1981-09 RESERVED [13]
228/8 Multicast 1981-09 RESERVED [13]
229/8 Multicast 1981-09 RESERVED [13]
230/8 Multicast 1981-09 RESERVED [13]
231/8 Multicast 1981-09 RESERVED [13]
232/8 Multicast 1981-09 RESERVED [13]
233/8 Multicast 1981-09 RESERVED [13]
234/8 Multicast 1981-09 RESERVED [13][14]
235/8 Multicast 1981-09 RESERVED [13]
236/8 Multicast 1981-09 RESERVED [13]
237/8 Multicast 1981-09 RESERVED [13]
238/8 Multicast 1981-09 RESERVED [13]
239/8 Multicast 1981-09 RESERVED [13][15]
240/8 Future use 1981-09 RESERVED [16]
241/8 Future use 1981-09 RESERVED [16]
242/8 Future use 1981-09 RESERVED [16]
243/8 Future use 1981-09 RESERVED [16]
244/8 Future use 1981-09 RESERVED [16]
245/8 Future use 1981-09 RESERVED [16]
246/8 Future use 1981-09 RESERVED [16]
247/8 Future use 1981-09 RESERVED [16]
248/8 Future use 1981-09 RESERVED [16]
249/8 Future use 1981-09 RESERVED [16]
250/8 Future use 1981-09 RESERVED [16]
251/8 Future use 1981-09 RESERVED [16]
252/8 Future use 1981-09 RESERVED [16]
253/8 Future use 1981-09 RESERVED [16]
254/8 Future use 1981-09 RESERVED [16]
255/8 Future use 1981-09 RESERVED [16][17]
* Full form of IPv6: e80:0000:0000:0000:0204:61ff:fe9d:f156
* Drop leading zeroes: fe80:0:0:0:204:61ff:fe9d:f156
* Collapse multiple zeroes to :: in the IPv6 address: fe80::204:61ff:fe9d:f156
* IPv4 dotted quad at the end: fe80:0000:0000:0000:0204:61ff:254.157.241.86
* Drop leading zeroes, IPv4 dotted quad at the end: fe80:0:0:0:0204:61ff:254.157.241.86
* Dotted quad at the end, multiple zeroes collapsed: fe80::204:61ff:254.157.241.86
* In addition, the regular expression matches these IPv6 forms:
* Localhost: ::1
* Link-local prefix: fe80::
* Global unicast prefix: 2001::
* Invalid IPv6 addresses:
* 1111:2222:3333:4444::5555:
* 1111:2222:3333::5555:
* 1111:2222::5555:
* 1111::5555:
* ::5555:
foreach my $should (
'::', '::1', 'fe02::1', '::ffff:192.0.2.1',
'2001:DB8::42',
'2001:DB8:1234:5678:90ab:cdef:0123:4567',
'2001:DB8:1234:5678:90ab:cdef:0123::',
'2001:DB8:1234:5678:90ab:cdef::0123',
'2001:DB8:1234:5678:90ab:cdef:192.0.2.1',
'2001:DB8:1234:5678:90ab:cdef:192.0.2.1',
) {
like($should, $anchored, "should be IPv6: [$should]");
}
foreach my $nope (
'127.0.0.1', '', ' ', '192.0.2.1',
'2001', '2001:DB8', '2001:DB8:', '2001:DB8::42::1',
'2001:DB8:1234:5678:90ab:cdef:g123:4567',
'2001:DB8:1234:5678:90ab:cdef:0123:4567:89',
'2001:DB8:1234:5678:90ab:cdef:0123',
) {
unlike($nope, $anchored, "should not be IPv6: [$nope]");
ipv6test(!1,"");# empty string
ipv6test(1,"::1");# loopback, compressed, non-routable
ipv6test(1,"::");# unspecified, compressed, non-routable
ipv6test(1,"0:0:0:0:0:0:0:1");# loopback, full
ipv6test(1,"0:0:0:0:0:0:0:0");# unspecified, full
ipv6test(1,"2001:DB8:0:0:8:800:200C:417A");# unicast, full
ipv6test(1,"FF01:0:0:0:0:0:0:101");# multicast, full
ipv6test(1,"2001:DB8::8:800:200C:417A");# unicast, compressed
ipv6test(1,"FF01::101");# multicast, compressed
ipv6test(!1,"2001:DB8:0:0:8:800:200C:417A:221");# unicast, full
ipv6test(!1,"FF01::101::2");# multicast, compressed
ipv6test(1,"fe80::217:f2ff:fe07:ed62");
ipv6test(1,"2001:0000:1234:0000:0000:C1C0:ABCD:0876");
ipv6test(1,"3ffe:0b00:0000:0000:0001:0000:0000:000a");
ipv6test(1,"FF02:0000:0000:0000:0000:0000:0000:0001");
ipv6test(1,"0000:0000:0000:0000:0000:0000:0000:0001");
ipv6test(1,"0000:0000:0000:0000:0000:0000:0000:0000");
ipv6test(!1,"02001:0000:1234:0000:0000:C1C0:ABCD:0876"); # extra 0 not allowed!
ipv6test(!1,"2001:0000:1234:0000:00001:C1C0:ABCD:0876"); # extra 0 not allowed!
#ipv6test(1," 2001:0000:1234:0000:0000:C1C0:ABCD:0876"); # leading space
#ipv6test(1,"2001:0000:1234:0000:0000:C1C0:ABCD:0876"); # trailing space
#ipv6test(1," 2001:0000:1234:0000:0000:C1C0:ABCD:0876 "); # leading and trailing space
ipv6test(!1,"2001:0000:1234:0000:0000:C1C0:ABCD:0876 0"); # junk after valid address
ipv6test(!1,"2001:0000:1234: 0000:0000:C1C0:ABCD:0876"); # internal space
ipv6test(!1,"3ffe:0b00:0000:0001:0000:0000:000a"); # seven segments
ipv6test(!1,"FF02:0000:0000:0000:0000:0000:0000:0000:0001"); # nine segments
ipv6test(!1,"3ffe:b00::1::a"); # double "::"
ipv6test(!1,"::1111:2222:3333:4444:5555:6666::"); # double "::"
ipv6test(1,"2::10");
ipv6test(1,"ff02::1");
ipv6test(1,"fe80::");
ipv6test(1,"2002::");
ipv6test(1,"2001:db8::");
ipv6test(1,"2001:0db8:1234::");
ipv6test(1,"::ffff:0:0");
ipv6test(1,"::1");
ipv6test(1,"1:2:3:4:5:6:7:8");
ipv6test(1,"1:2:3:4:5:6::8");
ipv6test(1,"1:2:3:4:5::8");
ipv6test(1,"1:2:3:4::8");
ipv6test(1,"1:2:3::8");
ipv6test(1,"1:2::8");
ipv6test(1,"1::8");
ipv6test(1,"1::2:3:4:5:6:7");
ipv6test(1,"1::2:3:4:5:6");
ipv6test(1,"1::2:3:4:5");
ipv6test(1,"1::2:3:4");
ipv6test(1,"1::2:3");
ipv6test(1,"1::8");
ipv6test(1,"::2:3:4:5:6:7:8");
ipv6test(1,"::2:3:4:5:6:7");
ipv6test(1,"::2:3:4:5:6");
ipv6test(1,"::2:3:4:5");
ipv6test(1,"::2:3:4");
ipv6test(1,"::2:3");
ipv6test(1,"::8");
ipv6test(1,"1:2:3:4:5:6::");
ipv6test(1,"1:2:3:4:5::");
ipv6test(1,"1:2:3:4::");
ipv6test(1,"1:2:3::");
ipv6test(1,"1:2::");
ipv6test(1,"1::");
ipv6test(1,"1:2:3:4:5::7:8");
ipv6test(!1,"1:2:3::4:5::7:8"); # Double "::"
ipv6test(!1,"12345::6:7:8");
ipv6test(1,"1:2:3:4::7:8");
ipv6test(1,"1:2:3::7:8");
ipv6test(1,"1:2::7:8");
ipv6test(1,"1::7:8");
# IPv4 addresses as dotted-quads
ipv6test(1,"1:2:3:4:5:6:1.2.3.4");
ipv6test(1,"1:2:3:4:5::1.2.3.4");
ipv6test(1,"1:2:3:4::1.2.3.4");
ipv6test(1,"1:2:3::1.2.3.4");
ipv6test(1,"1:2::1.2.3.4");
ipv6test(1,"1::1.2.3.4");
ipv6test(1,"1:2:3:4::5:1.2.3.4");
ipv6test(1,"1:2:3::5:1.2.3.4");
ipv6test(1,"1:2::5:1.2.3.4");
ipv6test(1,"1::5:1.2.3.4");
ipv6test(1,"1::5:11.22.33.44");
ipv6test(!1,"1::5:400.2.3.4");
ipv6test(!1,"1::5:260.2.3.4");
ipv6test(!1,"1::5:256.2.3.4");
ipv6test(!1,"1::5:1.256.3.4");
ipv6test(!1,"1::5:1.2.256.4");
ipv6test(!1,"1::5:1.2.3.256");
ipv6test(!1,"1::5:300.2.3.4");
ipv6test(!1,"1::5:1.300.3.4");
ipv6test(!1,"1::5:1.2.300.4");
ipv6test(!1,"1::5:1.2.3.300");
ipv6test(!1,"1::5:900.2.3.4");
ipv6test(!1,"1::5:1.900.3.4");
ipv6test(!1,"1::5:1.2.900.4");
ipv6test(!1,"1::5:1.2.3.900");
ipv6test(!1,"1::5:300.300.300.300");
ipv6test(!1,"1::5:3000.30.30.30");
ipv6test(!1,"1::400.2.3.4");
ipv6test(!1,"1::260.2.3.4");
ipv6test(!1,"1::256.2.3.4");
ipv6test(!1,"1::1.256.3.4");
ipv6test(!1,"1::1.2.256.4");
ipv6test(!1,"1::1.2.3.256");
ipv6test(!1,"1::300.2.3.4");
ipv6test(!1,"1::1.300.3.4");
ipv6test(!1,"1::1.2.300.4");
ipv6test(!1,"1::1.2.3.300");
ipv6test(!1,"1::900.2.3.4");
ipv6test(!1,"1::1.900.3.4");
ipv6test(!1,"1::1.2.900.4");
ipv6test(!1,"1::1.2.3.900");
ipv6test(!1,"1::300.300.300.300");
ipv6test(!1,"1::3000.30.30.30");
ipv6test(!1,"::400.2.3.4");
ipv6test(!1,"::260.2.3.4");
ipv6test(!1,"::256.2.3.4");
ipv6test(!1,"::1.256.3.4");
ipv6test(!1,"::1.2.256.4");
ipv6test(!1,"::1.2.3.256");
ipv6test(!1,"::300.2.3.4");
ipv6test(!1,"::1.300.3.4");
ipv6test(!1,"::1.2.300.4");
ipv6test(!1,"::1.2.3.300");
ipv6test(!1,"::900.2.3.4");
ipv6test(!1,"::1.900.3.4");
ipv6test(!1,"::1.2.900.4");
ipv6test(!1,"::1.2.3.900");
ipv6test(!1,"::300.300.300.300");
ipv6test(!1,"::3000.30.30.30");
ipv6test(1,"fe80::217:f2ff:254.7.237.98");
ipv6test(1,"::ffff:192.168.1.26");
ipv6test(!1,"2001:1:1:1:1:1:255Z255X255Y255"); # garbage instead of "." in IPv4
ipv6test(!1,"::ffff:192x168.1.26"); # ditto
ipv6test(1,"::ffff:192.168.1.1");
ipv6test(1,"0:0:0:0:0:0:13.1.68.3");# IPv4-compatible IPv6 address, full, deprecated
ipv6test(1,"0:0:0:0:0:FFFF:129.144.52.38");# IPv4-mapped IPv6 address, full
ipv6test(1,"::13.1.68.3");# IPv4-compatible IPv6 address, compressed, deprecated
ipv6test(1,"::FFFF:129.144.52.38");# IPv4-mapped IPv6 address, compressed
ipv6test(1,"fe80:0:0:0:204:61ff:254.157.241.86");
ipv6test(1,"fe80::204:61ff:254.157.241.86");
ipv6test(1,"::ffff:12.34.56.78");
ipv6test(!1,"::ffff:2.3.4");
ipv6test(!1,"::ffff:257.1.2.3");
ipv6test(!1,"1.2.3.4");
ipv6test(!1,"1.2.3.4:1111:2222:3333:4444::5555"); # Aeron
ipv6test(!1,"1.2.3.4:1111:2222:3333::5555");
ipv6test(!1,"1.2.3.4:1111:2222::5555");
ipv6test(!1,"1.2.3.4:1111::5555");
ipv6test(!1,"1.2.3.4::5555");
ipv6test(!1,"1.2.3.4::");
# Testing IPv4 addresses represented as dotted-quads
# Leading zero's in IPv4 addresses not allowed: some systems treat the leading "0" in ".086" as the start of an octal number
# Update: The BNF in RFC-3986 explicitly defines the dec-octet (for IPv4 addresses) not to have a leading zero
ipv6test(!1,"fe80:0000:0000:0000:0204:61ff:254.157.241.086");
ipv6test(1,"::ffff:192.0.2.128"); # but this is OK, since there's a single digit
ipv6test(!1,"XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1.2.3.4");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:00.00.00.00");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:000.000.000.000");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:256.256.256.256");
# Not testing address with subnet mask
# ipv6test(1,"2001:0DB8:0000:CD30:0000:0000:0000:0000/60");# full, with prefix
# ipv6test(1,"2001:0DB8::CD30:0:0:0:0/60");# compressed, with prefix
# ipv6test(1,"2001:0DB8:0:CD30::/60");# compressed, with prefix #2
# ipv6test(1,"::/128");# compressed, unspecified address type, non-routable
# ipv6test(1,"::1/128");# compressed, loopback address type, non-routable
# ipv6test(1,"FF00::/8");# compressed, multicast address type
# ipv6test(1,"FE80::/10");# compressed, link-local unicast, non-routable
# ipv6test(1,"FEC0::/10");# compressed, site-local unicast, deprecated
# ipv6test(!1,"124.15.6.89/60");# standard IPv4, prefix not allowed
ipv6test(1,"fe80:0000:0000:0000:0204:61ff:fe9d:f156");
ipv6test(1,"fe80:0:0:0:204:61ff:fe9d:f156");
ipv6test(1,"fe80::204:61ff:fe9d:f156");
ipv6test(1,"::1");
ipv6test(1,"fe80::");
ipv6test(1,"fe80::1");
ipv6test(!1,":");
ipv6test(1,"::ffff:c000:280");
# Aeron supplied these test cases
ipv6test(!1,"1111:2222:3333:4444::5555:");
ipv6test(!1,"1111:2222:3333::5555:");
ipv6test(!1,"1111:2222::5555:");
ipv6test(!1,"1111::5555:");
ipv6test(!1,"::5555:");
ipv6test(!1,":::");
ipv6test(!1,"1111:");
ipv6test(!1,":");
ipv6test(!1,":1111:2222:3333:4444::5555");
ipv6test(!1,":1111:2222:3333::5555");
ipv6test(!1,":1111:2222::5555");
ipv6test(!1,":1111::5555");
ipv6test(!1,":::5555");
ipv6test(!1,":::");
# Additional test cases
# from http://rt.cpan.org/Public/Bug/Display.html?id=50693
ipv6test(1,"2001:0db8:85a3:0000:0000:8a2e:0370:7334");
ipv6test(1,"2001:db8:85a3:0:0:8a2e:370:7334");
ipv6test(1,"2001:db8:85a3::8a2e:370:7334");
ipv6test(1,"2001:0db8:0000:0000:0000:0000:1428:57ab");
ipv6test(1,"2001:0db8:0000:0000:0000::1428:57ab");
ipv6test(1,"2001:0db8:0:0:0:0:1428:57ab");
ipv6test(1,"2001:0db8:0:0::1428:57ab");
ipv6test(1,"2001:0db8::1428:57ab");
ipv6test(1,"2001:db8::1428:57ab");
ipv6test(1,"0000:0000:0000:0000:0000:0000:0000:0001");
ipv6test(1,"::1");
ipv6test(1,"::ffff:0c22:384e");
ipv6test(1,"2001:0db8:1234:0000:0000:0000:0000:0000");
ipv6test(1,"2001:0db8:1234:ffff:ffff:ffff:ffff:ffff");
ipv6test(1,"2001:db8:a::123");
ipv6test(1,"fe80::");
ipv6test(!1,"123");
ipv6test(!1,"ldkfj");
ipv6test(!1,"2001::FFD3::57ab");
ipv6test(!1,"2001:db8:85a3::8a2e:37023:7334");
ipv6test(!1,"2001:db8:85a3::8a2e:370k:7334");
ipv6test(!1,"1:2:3:4:5:6:7:8:9");
ipv6test(!1,"1::2::3");
ipv6test(!1,"1:::3:4:5");
ipv6test(!1,"1:2:3::4:5:6:7:8:9");
# New from Aeron
ipv6test(1,"1111:2222:3333:4444:5555:6666:7777:8888");
ipv6test(1,"1111:2222:3333:4444:5555:6666:7777::");
ipv6test(1,"1111:2222:3333:4444:5555:6666::");
ipv6test(1,"1111:2222:3333:4444:5555::");
ipv6test(1,"1111:2222:3333:4444::");
ipv6test(1,"1111:2222:3333::");
ipv6test(1,"1111:2222::");
ipv6test(1,"1111::");
# ipv6test(1,"::"); #duplicate
ipv6test(1,"1111:2222:3333:4444:5555:6666::8888");
ipv6test(1,"1111:2222:3333:4444:5555::8888");
ipv6test(1,"1111:2222:3333:4444::8888");
ipv6test(1,"1111:2222:3333::8888");
ipv6test(1,"1111:2222::8888");
ipv6test(1,"1111::8888");
ipv6test(1,"::8888");
ipv6test(1,"1111:2222:3333:4444:5555::7777:8888");
ipv6test(1,"1111:2222:3333:4444::7777:8888");
ipv6test(1,"1111:2222:3333::7777:8888");
ipv6test(1,"1111:2222::7777:8888");
ipv6test(1,"1111::7777:8888");
ipv6test(1,"::7777:8888");
ipv6test(1,"1111:2222:3333:4444::6666:7777:8888");
ipv6test(1,"1111:2222:3333::6666:7777:8888");
ipv6test(1,"1111:2222::6666:7777:8888");
ipv6test(1,"1111::6666:7777:8888");
ipv6test(1,"::6666:7777:8888");
ipv6test(1,"1111:2222:3333::5555:6666:7777:8888");
ipv6test(1,"1111:2222::5555:6666:7777:8888");
ipv6test(1,"1111::5555:6666:7777:8888");
ipv6test(1,"::5555:6666:7777:8888");
ipv6test(1,"1111:2222::4444:5555:6666:7777:8888");
ipv6test(1,"1111::4444:5555:6666:7777:8888");
ipv6test(1,"::4444:5555:6666:7777:8888");
ipv6test(1,"1111::3333:4444:5555:6666:7777:8888");
ipv6test(1,"::3333:4444:5555:6666:7777:8888");
ipv6test(1,"::2222:3333:4444:5555:6666:7777:8888");
ipv6test(1,"1111:2222:3333:4444:5555:6666:123.123.123.123");
ipv6test(1,"1111:2222:3333:4444:5555::123.123.123.123");
ipv6test(1,"1111:2222:3333:4444::123.123.123.123");
ipv6test(1,"1111:2222:3333::123.123.123.123");
ipv6test(1,"1111:2222::123.123.123.123");
ipv6test(1,"1111::123.123.123.123");
ipv6test(1,"::123.123.123.123");
ipv6test(1,"1111:2222:3333:4444::6666:123.123.123.123");
ipv6test(1,"1111:2222:3333::6666:123.123.123.123");
ipv6test(1,"1111:2222::6666:123.123.123.123");
ipv6test(1,"1111::6666:123.123.123.123");
ipv6test(1,"::6666:123.123.123.123");
ipv6test(1,"1111:2222:3333::5555:6666:123.123.123.123");
ipv6test(1,"1111:2222::5555:6666:123.123.123.123");
ipv6test(1,"1111::5555:6666:123.123.123.123");
ipv6test(1,"::5555:6666:123.123.123.123");
ipv6test(1,"1111:2222::4444:5555:6666:123.123.123.123");
ipv6test(1,"1111::4444:5555:6666:123.123.123.123");
ipv6test(1,"::4444:5555:6666:123.123.123.123");
ipv6test(1,"1111::3333:4444:5555:6666:123.123.123.123");
ipv6test(1,"::2222:3333:4444:5555:6666:123.123.123.123");
# Playing with combinations of "0" and "::"
# NB: these are all sytactically correct, but are bad form
# because "0" adjacent to "::" should be combined into "::"
ipv6test(1,"::0:0:0:0:0:0:0");
ipv6test(1,"::0:0:0:0:0:0");
ipv6test(1,"::0:0:0:0:0");
ipv6test(1,"::0:0:0:0");
ipv6test(1,"::0:0:0");
ipv6test(1,"::0:0");
ipv6test(1,"::0");
ipv6test(1,"0:0:0:0:0:0:0::");
ipv6test(1,"0:0:0:0:0:0::");
ipv6test(1,"0:0:0:0:0::");
ipv6test(1,"0:0:0:0::");
ipv6test(1,"0:0:0::");
ipv6test(1,"0:0::");
ipv6test(1,"0::");
# New invalid from Aeron
# Invalid data
ipv6test(!1,"XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX");
# Too many components
ipv6test(!1,"1111:2222:3333:4444:5555:6666:7777:8888:9999");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:7777:8888::");
ipv6test(!1,"::2222:3333:4444:5555:6666:7777:8888:9999");
# Too few components
ipv6test(!1,"1111:2222:3333:4444:5555:6666:7777");
ipv6test(!1,"1111:2222:3333:4444:5555:6666");
ipv6test(!1,"1111:2222:3333:4444:5555");
ipv6test(!1,"1111:2222:3333:4444");
ipv6test(!1,"1111:2222:3333");
ipv6test(!1,"1111:2222");
ipv6test(!1,"1111");
# Missing :
ipv6test(!1,"11112222:3333:4444:5555:6666:7777:8888");
ipv6test(!1,"1111:22223333:4444:5555:6666:7777:8888");
ipv6test(!1,"1111:2222:33334444:5555:6666:7777:8888");
ipv6test(!1,"1111:2222:3333:44445555:6666:7777:8888");
ipv6test(!1,"1111:2222:3333:4444:55556666:7777:8888");
ipv6test(!1,"1111:2222:3333:4444:5555:66667777:8888");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:77778888");
# Missing : intended for ::
ipv6test(!1,"1111:2222:3333:4444:5555:6666:7777:8888:");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:7777:");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:");
ipv6test(!1,"1111:2222:3333:4444:5555:");
ipv6test(!1,"1111:2222:3333:4444:");
ipv6test(!1,"1111:2222:3333:");
ipv6test(!1,"1111:2222:");
ipv6test(!1,"1111:");
ipv6test(!1,":");
ipv6test(!1,":8888");
ipv6test(!1,":7777:8888");
ipv6test(!1,":6666:7777:8888");
ipv6test(!1,":5555:6666:7777:8888");
ipv6test(!1,":4444:5555:6666:7777:8888");
ipv6test(!1,":3333:4444:5555:6666:7777:8888");
ipv6test(!1,":2222:3333:4444:5555:6666:7777:8888");
ipv6test(!1,":1111:2222:3333:4444:5555:6666:7777:8888");
# :::
ipv6test(!1,":::2222:3333:4444:5555:6666:7777:8888");
ipv6test(!1,"1111:::3333:4444:5555:6666:7777:8888");
ipv6test(!1,"1111:2222:::4444:5555:6666:7777:8888");
ipv6test(!1,"1111:2222:3333:::5555:6666:7777:8888");
ipv6test(!1,"1111:2222:3333:4444:::6666:7777:8888");
ipv6test(!1,"1111:2222:3333:4444:5555:::7777:8888");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:::8888");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:7777:::");
# Double ::");
ipv6test(!1,"::2222::4444:5555:6666:7777:8888");
ipv6test(!1,"::2222:3333::5555:6666:7777:8888");
ipv6test(!1,"::2222:3333:4444::6666:7777:8888");
ipv6test(!1,"::2222:3333:4444:5555::7777:8888");
ipv6test(!1,"::2222:3333:4444:5555:7777::8888");
ipv6test(!1,"::2222:3333:4444:5555:7777:8888::");
ipv6test(!1,"1111::3333::5555:6666:7777:8888");
ipv6test(!1,"1111::3333:4444::6666:7777:8888");
ipv6test(!1,"1111::3333:4444:5555::7777:8888");
ipv6test(!1,"1111::3333:4444:5555:6666::8888");
ipv6test(!1,"1111::3333:4444:5555:6666:7777::");
ipv6test(!1,"1111:2222::4444::6666:7777:8888");
ipv6test(!1,"1111:2222::4444:5555::7777:8888");
ipv6test(!1,"1111:2222::4444:5555:6666::8888");
ipv6test(!1,"1111:2222::4444:5555:6666:7777::");
ipv6test(!1,"1111:2222:3333::5555::7777:8888");
ipv6test(!1,"1111:2222:3333::5555:6666::8888");
ipv6test(!1,"1111:2222:3333::5555:6666:7777::");
ipv6test(!1,"1111:2222:3333:4444::6666::8888");
ipv6test(!1,"1111:2222:3333:4444::6666:7777::");
ipv6test(!1,"1111:2222:3333:4444:5555::7777::");
# Too many components"
ipv6test(!1,"1111:2222:3333:4444:5555:6666:7777:8888:1.2.3.4");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:7777:1.2.3.4");
ipv6test(!1,"1111:2222:3333:4444:5555:6666::1.2.3.4");
ipv6test(!1,"::2222:3333:4444:5555:6666:7777:1.2.3.4");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:1.2.3.4.5");
# Too few components
ipv6test(!1,"1111:2222:3333:4444:5555:1.2.3.4");
ipv6test(!1,"1111:2222:3333:4444:1.2.3.4");
ipv6test(!1,"1111:2222:3333:1.2.3.4");
ipv6test(!1,"1111:2222:1.2.3.4");
ipv6test(!1,"1111:1.2.3.4");
ipv6test(!1,"1.2.3.4");
# Missing :
ipv6test(!1,"11112222:3333:4444:5555:6666:1.2.3.4");
ipv6test(!1,"1111:22223333:4444:5555:6666:1.2.3.4");
ipv6test(!1,"1111:2222:33334444:5555:6666:1.2.3.4");
ipv6test(!1,"1111:2222:3333:44445555:6666:1.2.3.4");
ipv6test(!1,"1111:2222:3333:4444:55556666:1.2.3.4");
ipv6test(!1,"1111:2222:3333:4444:5555:66661.2.3.4");
# Missing .
ipv6test(!1,"1111:2222:3333:4444:5555:6666:255255.255.255");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:255.255255.255");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:255.255.255255");
# Missing : intended for ::
ipv6test(!1,":1.2.3.4");
ipv6test(!1,":6666:1.2.3.4");
ipv6test(!1,":5555:6666:1.2.3.4");
ipv6test(!1,":4444:5555:6666:1.2.3.4");
ipv6test(!1,":3333:4444:5555:6666:1.2.3.4");
ipv6test(!1,":2222:3333:4444:5555:6666:1.2.3.4");
ipv6test(!1,":1111:2222:3333:4444:5555:6666:1.2.3.4");
# :::
ipv6test(!1,":::2222:3333:4444:5555:6666:1.2.3.4");
ipv6test(!1,"1111:::3333:4444:5555:6666:1.2.3.4");
ipv6test(!1,"1111:2222:::4444:5555:6666:1.2.3.4");
ipv6test(!1,"1111:2222:3333:::5555:6666:1.2.3.4");
ipv6test(!1,"1111:2222:3333:4444:::6666:1.2.3.4");
ipv6test(!1,"1111:2222:3333:4444:5555:::1.2.3.4");
# Double ::
ipv6test(!1,"::2222::4444:5555:6666:1.2.3.4");
ipv6test(!1,"::2222:3333::5555:6666:1.2.3.4");
ipv6test(!1,"::2222:3333:4444::6666:1.2.3.4");
ipv6test(!1,"::2222:3333:4444:5555::1.2.3.4");
ipv6test(!1,"1111::3333::5555:6666:1.2.3.4");
ipv6test(!1,"1111::3333:4444::6666:1.2.3.4");
ipv6test(!1,"1111::3333:4444:5555::1.2.3.4");
ipv6test(!1,"1111:2222::4444::6666:1.2.3.4");
ipv6test(!1,"1111:2222::4444:5555::1.2.3.4");
ipv6test(!1,"1111:2222:3333::5555::1.2.3.4");
# Missing parts
ipv6test(!1,"::.");
ipv6test(!1,"::..");
ipv6test(!1,"::...");
ipv6test(!1,"::1...");
ipv6test(!1,"::1.2..");
ipv6test(!1,"::1.2.3.");
ipv6test(!1,"::.2..");
ipv6test(!1,"::.2.3.");
ipv6test(!1,"::.2.3.4");
ipv6test(!1,"::..3.");
ipv6test(!1,"::..3.4");
ipv6test(!1,"::...4");
# Extra : in front
ipv6test(!1,":1111:2222:3333:4444:5555:6666:7777::");
ipv6test(!1,":1111:2222:3333:4444:5555:6666::");
ipv6test(!1,":1111:2222:3333:4444:5555::");
ipv6test(!1,":1111:2222:3333:4444::");
ipv6test(!1,":1111:2222:3333::");
ipv6test(!1,":1111:2222::");
ipv6test(!1,":1111::");
ipv6test(!1,":::");
ipv6test(!1,":1111:2222:3333:4444:5555:6666::8888");
ipv6test(!1,":1111:2222:3333:4444:5555::8888");
ipv6test(!1,":1111:2222:3333:4444::8888");
ipv6test(!1,":1111:2222:3333::8888");
ipv6test(!1,":1111:2222::8888");
ipv6test(!1,":1111::8888");
ipv6test(!1,":::8888");
ipv6test(!1,":1111:2222:3333:4444:5555::7777:8888");
ipv6test(!1,":1111:2222:3333:4444::7777:8888");
ipv6test(!1,":1111:2222:3333::7777:8888");
ipv6test(!1,":1111:2222::7777:8888");
ipv6test(!1,":1111::7777:8888");
ipv6test(!1,":::7777:8888");
ipv6test(!1,":1111:2222:3333:4444::6666:7777:8888");
ipv6test(!1,":1111:2222:3333::6666:7777:8888");
ipv6test(!1,":1111:2222::6666:7777:8888");
ipv6test(!1,":1111::6666:7777:8888");
ipv6test(!1,":::6666:7777:8888");
ipv6test(!1,":1111:2222:3333::5555:6666:7777:8888");
ipv6test(!1,":1111:2222::5555:6666:7777:8888");
ipv6test(!1,":1111::5555:6666:7777:8888");
ipv6test(!1,":::5555:6666:7777:8888");
ipv6test(!1,":1111:2222::4444:5555:6666:7777:8888");
ipv6test(!1,":1111::4444:5555:6666:7777:8888");
ipv6test(!1,":::4444:5555:6666:7777:8888");
ipv6test(!1,":1111::3333:4444:5555:6666:7777:8888");
ipv6test(!1,":::3333:4444:5555:6666:7777:8888");
ipv6test(!1,":::2222:3333:4444:5555:6666:7777:8888");
ipv6test(!1,":1111:2222:3333:4444:5555:6666:1.2.3.4");
ipv6test(!1,":1111:2222:3333:4444:5555::1.2.3.4");
ipv6test(!1,":1111:2222:3333:4444::1.2.3.4");
ipv6test(!1,":1111:2222:3333::1.2.3.4");
ipv6test(!1,":1111:2222::1.2.3.4");
ipv6test(!1,":1111::1.2.3.4");
ipv6test(!1,":::1.2.3.4");
ipv6test(!1,":1111:2222:3333:4444::6666:1.2.3.4");
ipv6test(!1,":1111:2222:3333::6666:1.2.3.4");
ipv6test(!1,":1111:2222::6666:1.2.3.4");
ipv6test(!1,":1111::6666:1.2.3.4");
ipv6test(!1,":::6666:1.2.3.4");
ipv6test(!1,":1111:2222:3333::5555:6666:1.2.3.4");
ipv6test(!1,":1111:2222::5555:6666:1.2.3.4");
ipv6test(!1,":1111::5555:6666:1.2.3.4");
ipv6test(!1,":::5555:6666:1.2.3.4");
ipv6test(!1,":1111:2222::4444:5555:6666:1.2.3.4");
ipv6test(!1,":1111::4444:5555:6666:1.2.3.4");
ipv6test(!1,":::4444:5555:6666:1.2.3.4");
ipv6test(!1,":1111::3333:4444:5555:6666:1.2.3.4");
ipv6test(!1,":::2222:3333:4444:5555:6666:1.2.3.4");
# Extra : at end
ipv6test(!1,"1111:2222:3333:4444:5555:6666:7777:::");
ipv6test(!1,"1111:2222:3333:4444:5555:6666:::");
ipv6test(!1,"1111:2222:3333:4444:5555:::");
ipv6test(!1,"1111:2222:3333:4444:::");
ipv6test(!1,"1111:2222:3333:::");
ipv6test(!1,"1111:2222:::");
ipv6test(!1,"1111:::");
ipv6test(!1,":::");
ipv6test(!1,"1111:2222:3333:4444:5555:6666::8888:");
ipv6test(!1,"1111:2222:3333:4444:5555::8888:");
ipv6test(!1,"1111:2222:3333:4444::8888:");
ipv6test(!1,"1111:2222:3333::8888:");
ipv6test(!1,"1111:2222::8888:");
ipv6test(!1,"1111::8888:");
ipv6test(!1,"::8888:");
ipv6test(!1,"1111:2222:3333:4444:5555::7777:8888:");
ipv6test(!1,"1111:2222:3333:4444::7777:8888:");
ipv6test(!1,"1111:2222:3333::7777:8888:");
ipv6test(!1,"1111:2222::7777:8888:");
ipv6test(!1,"1111::7777:8888:");
ipv6test(!1,"::7777:8888:");
ipv6test(!1,"1111:2222:3333:4444::6666:7777:8888:");
ipv6test(!1,"1111:2222:3333::6666:7777:8888:");
ipv6test(!1,"1111:2222::6666:7777:8888:");
ipv6test(!1,"1111::6666:7777:8888:");
ipv6test(!1,"::6666:7777:8888:");
ipv6test(!1,"1111:2222:3333::5555:6666:7777:8888:");
ipv6test(!1,"1111:2222::5555:6666:7777:8888:");
ipv6test(!1,"1111::5555:6666:7777:8888:");
ipv6test(!1,"::5555:6666:7777:8888:");
ipv6test(!1,"1111:2222::4444:5555:6666:7777:8888:");
ipv6test(!1,"1111::4444:5555:6666:7777:8888:");
ipv6test(!1,"::4444:5555:6666:7777:8888:");
ipv6test(!1,"1111::3333:4444:5555:6666:7777:8888:");
ipv6test(!1,"::3333:4444:5555:6666:7777:8888:");
ipv6test(!1,"::2222:3333:4444:5555:6666:7777:8888:");
# Additional cases: http://crisp.tweakblogs.net/blog/2031/ipv6-validation-%28and-caveats%29.html
ipv6test(1,"0:a:b:c:d:e:f::");
ipv6test(1,"::0:a:b:c:d:e:f"); # syntactically correct, but bad form (::0:... could be combined)
ipv6test(1,"a:b:c:d:e:f:0::");
ipv6test(!1,"':10.0.0.1");
# Testing for IPv4 in IPv6 format:
ipv6test(1,"::10.0.0.1");
ipv6test(1,"::FFFF:10.0.0.1");
# NB All the regexes fail to detect somewhat suspect v4 in v6 addresses
# Leaving this test out
#ipv6test(!1,"1::1.2.3.4");
# Testing for "%" at end of IPv6 address
ipv6test(!1,"2001:db8::%1");