Files
router-lists-ui/frontend/src/utils/validationUtils.js
T

63 lines
1.5 KiB
JavaScript

/**
* Утилиты валидации
* Централизация всех функций валидации
*/
/**
* Валидация FQDN домена
*/
export function isValidDomain(value) {
const v = String(value).trim().toLowerCase();
return /^([a-z0-9-]+\.)+[a-z]{2,}$/i.test(v);
}
/**
* Валидация ASN
*/
export function isValidAsn(value) {
return /^[0-9]+$/.test(String(value).trim());
}
/**
* Валидация IPv4 адреса
*/
export function isValidIPv4(ip) {
const octets = ip.split('.');
if (octets.length !== 4) return false;
return octets.every(o => /^\d{1,3}$/.test(o) && Number(o) >= 0 && Number(o) <= 255);
}
/**
* Валидация CIDR
*/
export function isValidCidr(value) {
const v = String(value).trim();
const parts = v.split('/');
if (parts.length !== 2) return false;
const [ip, mask] = parts;
if (!isValidIPv4(ip)) return false;
if (!/^\d{1,2}$/.test(mask)) return false;
const m = Number(mask);
return m >= 0 && m <= 32;
}
/**
* Валидация BGP Community (поддержка числового и extended формата)
*/
export function isValidCommunity(value) {
return /^(\d+|\d+:\d+)$/.test(String(value).trim());
}
/**
* Валидация IP адреса (поддержка IPv4 и IPv6)
*/
export function isValidIP(value) {
// IPv4
if (isValidIPv4(value)) return true;
// Упрощенная проверка IPv6
const ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::)$/;
return ipv6Regex.test(value);
}