How to check if a string is IPv4 or IPv6 or invalid in JavaScript

2 Answers

0 votes
const net = require("net");

function checkIpAddress(s) {
    if (net.isIP(s) === 4) {
        return "IPv4";
    }
    if (net.isIP(s) === 6) {
        return "IPv6";
    }

    return "Invalid";
}

console.log(checkIpAddress("112.128.1.2"));
console.log(checkIpAddress("2001:0dc7:85b2:0000:0000:6d3e:0380:8651"));
console.log(checkIpAddress("999.999.999.999"));
console.log(checkIpAddress("abc"));




/*
run:

IPv4
IPv6
Invalid
Invalid

*/

 



answered Jan 19 by avibootz
0 votes
function isIPv4(s) {
    const parts = s.split(".");
    if (parts.length !== 4) return false;
    return parts.every(p =>
        /^\d+$/.test(p) &&
        Number(p) >= 0 &&
        Number(p) <= 255 &&
        String(Number(p)) === p  // no leading zeros
    );
}

function isIPv6(s) {
    // Accepts full or compressed IPv6
    return /^[0-9A-Fa-f:]+$/.test(s) && s.includes(":");
}

function checkIpAddress(s) {
    if (isIPv4(s)) return "IPv4";
    if (isIPv6(s)) return "IPv6";

    return "Invalid";
}

console.log(checkIpAddress("112.128.1.2"));
console.log(checkIpAddress("2001:0dc7:85b2:0000:0000:6d3e:0380:8651"));
console.log(checkIpAddress("999.999.999.999"));
console.log(checkIpAddress("abc"));



/*
run:

IPv4
IPv6
Invalid
Invalid

*/

 



answered Jan 20 by avibootz
edited Jan 20 by avibootz
...