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"
*/