diff --git a/lib/net.js b/lib/net.js index d6e3d5adae1..47f0403cfb7 100644 --- a/lib/net.js +++ b/lib/net.js @@ -1138,7 +1138,7 @@ exports.isIP = function(input) { } } return 4; - } else if (/^::|^::1|^([a-fA-F0-9]{1,4}::?){1,7}([a-fA-F0-9]{1,4})$/.test( + } else if (/^::|^::1|^([a-fA-F0-9]{1,4}::?){1,7}([a-fA-F0-9]{0,4})$/.test( input)) { return 6; } else { diff --git a/test/simple/test-net-isip.js b/test/simple/test-net-isip.js index 4f60f502135..353cad6747f 100644 --- a/test/simple/test-net-isip.js +++ b/test/simple/test-net-isip.js @@ -31,6 +31,10 @@ assert.equal(net.isIP('0000:0000:0000:0000:0000:0000:0000:0000::0000'), 0); assert.equal(net.isIP('1050:0:0:0:5:600:300c:326b'), 6); assert.equal(net.isIP('2001:252:0:1::2008:6'), 6); assert.equal(net.isIP('2001:dead:beef:1::2008:6'), 6); +assert.equal(net.isIP('2001::'), 6); +assert.equal(net.isIP('2001:dead::'), 6); +assert.equal(net.isIP('2001:dead:beef::'), 6); +assert.equal(net.isIP('2001:dead:beef:1::'), 6); assert.equal(net.isIP('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'), 6); assert.equal(net.isIP('::1'), 6); assert.equal(net.isIP('::'), 6);