export function isExternal (path) { return /^(https?:|mailto:|tel:)/.test(path) } export function validPhone (phone) { return /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(phone) } export function validEmail (email) { return /^([a-zA-Z0-9]+[_|.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(email) } export function validMAC (mac) { return /^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$/.test(mac) } export function validIPv4 (ip) { return /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))).){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/.test(ip) } export function validIPv4Address (address) { return /^[a-z]+:\/\/((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))).){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))(:[1-9]\d{1,4})?$/.test(address) } export function validIPv6 (ip) { if (ip === '::') { return true } const arr = ip.split('::') switch (arr.length) { case 1: return /^([\da-zA-Z]{1,4}:){7}[\da-zA-Z]{1,4}$/.test(ip) case 2: return /^([\da-zA-Z]{1,4}:){0,6}[\da-zA-Z]{1,4}$/.test( arr[0] && arr[1] ? `${arr[0]}:arr[1]` : arr[0] || arr[1] ) default: return false } } export function validLongitude (longitude) { return /^[-+]?(0(\.\d{1,8})?|([1-9](\d)?)(\.\d{1,8})?|1[0-7]\d{1}(\.\d{1,8})?|180(([.][0]{1,8})?))$/.test(longitude) } export function validLatitude (latitude) { return /^[-+]?((0|([1-8]\d?))(\.\d{1,10})?|90(\.0{1,10})?)$/.test(latitude) }