Проверка IP адреса. Просьба протестировать у себя код.
Задача скрипта позволять вводить адреса в такой форме:
для IPv4 - 1-255.0-255.0-255.1-255 для IPv6 - 1-255.0-255.0-255.0-255.0-255.1-255 var ip = prompt('Проверка корректности записи IP адресов.\nВведите IP адрес:'); var reg = /^(2[0-5][0-5]|1\d\d|[1-9](?=\d)\d|[1-9])((\.(2[0-5][0-5]|1\d\d|[1-9](?=\d)\d|\d)){2}|(\.(2[0-5][0-5]|1\d\d|[1-9](?=\d)\d|\d)){4})\.(2[0-5][0-5]|1\d\d|[1-9](?=\d)\d|[1-9])$/; var result, resultLength; if (result = ip.match(reg)){ resultLength = result[0].split('.').length; alert('Это правильный IPv'+ resultLength +' адрес:\n'+ result[0]); } else { alert('Введенный вами адрес - ['+ ip +'] не корректен!'); } Прошу протестировать и выразить свои мысли по поводу решения задачи. Большое спасибо заранее! :) |
регами такое не проверяют. split и сравнивать как число
|
function IP(a) { a = a.split('.'); for(i=0; i<a.length; i++) if(!a[i] || a[i] > 255) return false; return true; } Может, как-то так :) |
function isIPv4(addr) { return /^(([01]?\d{1,2}|2[0-4]\d|25[0-5])(\.|$)){4}$/.test(addr); } |
диапазоны для IPv6 0x0-0xFFFF
|
а кто сказал, что ИПшники могут быть записаны только как циферки?
|
ipv6
/^([\da-f]{1,4}:){7}([\da-f]{1,4}|(([01]?\d{1,2}|2[0-4]\d|25[0-5])(\.|$)){4})$/i.test('0001:2222:3456:7890:abcd:e:fff:12.34.56.78') true /^([\da-f]{1,4}:){7}([\da-f]{1,4}|(([01]?\d{1,2}|2[0-4]\d|25[0-5])(\.|$)){4})$/i.test('2001:db8:1234:0000:0000:0000:0000:0000') true |
вот моя регулярка те на 1088 знаков работает как часы, разобраться не пытайся, она генерированная
/^(([\da-f]{1,4}:){7}([\da-f]{1,4}|(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))|::(([\da-f]{1,4}:){0,6}([\da-f]{1,4}|(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))?)?|([\da-f]{1,4}:){0,6}([\da-f]{1,4}|(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))?::|([\da-f]{1,4}:):([\da-f]{1,4}:){0,5}([\da-f]{1,4}|(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))|([\da-f]{1,4}:){1,2}:([\da-f]{1,4}:){0,4}([\da-f]{1,4}|(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))|([\da-f]{1,4}:){1,3}:([\da-f]{1,4}:){0,3}([\da-f]{1,4}|(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))|([\da-f]{1,4}:){1,4}:([\da-f]{1,4}:){0,2}([\da-f]{1,4}|(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))|([\da-f]{1,4}:){1,5}:([\da-f]{1,4}:)?([\da-f]{1,4}|(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))|([\da-f]{1,4}:){1,6}:([\da-f]{1,4}|(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])))$/i |
это для ipv6
:: ::1 1:: 1:2:3:4:5:6:7:8 1:2:3::4:5:6:7 0Ffa::127.0.0.1 |
я так понял ipv4 может быть только на конце
|
Часовой пояс GMT +3, время: 19:22. |