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

1 Answer

0 votes
function isIPv4(s: string): boolean {
    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: string): boolean {
    // Accepts full or compressed IPv6
    return /^[0-9A-Fa-f:]+$/.test(s) && s.includes(":");
}

function checkIpAddress(s: string): "IPv4" | "IPv6" | "Invalid" {
    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
...