Validate And Classify IPv4 Addresses
Parse dotted-quad IPv4 addresses strictly, reject leading zeros, and classify private, loopback and link-local ranges.
Code
export function parseIPv4(address) {
if (typeof address !== "string") return null;
const parts = address.split(".");
if (parts.length !== 4) return null;
const octets = [];
for (const part of parts) {
if (!/^\d{1,3}$/.test(part)) return null;
if (part.length > 1 && part.startsWith("0")) return null;
const value = Number(part);
if (value > 255) return null;
octets.push(value);
}
return octets;
}
export function isValidIPv4(address) {
return parseIPv4(address) !== null;
}
export function isPrivateIPv4(address) {
const octets = parseIPv4(address);
if (!octets) return false;
const [a, b] = octets;
return a === 10
|| (a === 172 && b >= 16 && b <= 31)
|| (a === 192 && b === 168)
|| a === 127
|| (a === 169 && b === 254);
}Report a problem with this exampleOpens a pre-filled issue on GitHub.