34 lines
608 B
TypeScript
34 lines
608 B
TypeScript
import validateIpv4 from "./validate-ipv4";
|
|
|
|
type Params = {
|
|
value?: string;
|
|
};
|
|
|
|
export default function validateIpv4Cidr({ value }: Params) {
|
|
if (!value) {
|
|
return false;
|
|
}
|
|
|
|
const [ip, prefix, extra] = value.split("/");
|
|
|
|
if (extra) {
|
|
return false;
|
|
}
|
|
|
|
if (!validateIpv4({ ip })) {
|
|
return false;
|
|
}
|
|
|
|
if (prefix == undefined) {
|
|
return true;
|
|
}
|
|
|
|
if (!/^\d{1,2}$/.test(prefix)) {
|
|
return false;
|
|
}
|
|
|
|
const prefix_value = Number(prefix);
|
|
|
|
return prefix_value >= 0 && prefix_value <= 32 && String(prefix_value) == prefix;
|
|
}
|