Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.06.2013, 22:46
Интересующийся
Отправить личное сообщение для ed-210 Посмотреть профиль Найти все сообщения от ed-210
 
Регистрация: 22.05.2013
Сообщений: 14

Проверка 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 +'] не корректен!');

}

Прошу протестировать и выразить свои мысли по поводу решения задачи. Большое спасибо заранее!
Ответить с цитированием
  #2 (permalink)  
Старый 21.06.2013, 23:49
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

регами такое не проверяют. split и сравнивать как число
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 23.06.2013, 13:04
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

function IP(a)
{
   a = a.split('.');
   for(i=0; i<a.length; i++) if(!a[i] || a[i] > 255) return false;
   return true;
}


Может, как-то так
Ответить с цитированием
  #4 (permalink)  
Старый 23.06.2013, 16:00
Аспирант
Отправить личное сообщение для sexyQuery Посмотреть профиль Найти все сообщения от sexyQuery
 
Регистрация: 23.06.2013
Сообщений: 54

function isIPv4(addr) { 
    return /^(([01]?\d{1,2}|2[0-4]\d|25[0-5])(\.|$)){4}$/.test(addr);
}

Последний раз редактировалось sexyQuery, 23.06.2013 в 22:48.
Ответить с цитированием
  #5 (permalink)  
Старый 23.06.2013, 16:03
Аспирант
Отправить личное сообщение для sexyQuery Посмотреть профиль Найти все сообщения от sexyQuery
 
Регистрация: 23.06.2013
Сообщений: 54

диапазоны для IPv6 0x0-0xFFFF
Ответить с цитированием
  #6 (permalink)  
Старый 23.06.2013, 19:40
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

а кто сказал, что ИПшники могут быть записаны только как циферки?
Ответить с цитированием
  #7 (permalink)  
Старый 24.06.2013, 02:55
Аспирант
Отправить личное сообщение для sexyQuery Посмотреть профиль Найти все сообщения от sexyQuery
 
Регистрация: 23.06.2013
Сообщений: 54

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
Ответить с цитированием
  #8 (permalink)  
Старый 24.06.2013, 20:13
Аспирант
Отправить личное сообщение для sexyQuery Посмотреть профиль Найти все сообщения от sexyQuery
 
Регистрация: 23.06.2013
Сообщений: 54

вот моя регулярка те на 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

Последний раз редактировалось sexyQuery, 24.06.2013 в 20:16.
Ответить с цитированием
  #9 (permalink)  
Старый 24.06.2013, 20:15
Аспирант
Отправить личное сообщение для sexyQuery Посмотреть профиль Найти все сообщения от sexyQuery
 
Регистрация: 23.06.2013
Сообщений: 54

это для ipv6
::
::1
1::
1:2:3:4:5:6:7:8
1:2:3::4:5:6:7
0Ffa::127.0.0.1
Ответить с цитированием
  #10 (permalink)  
Старый 24.06.2013, 20:18
Аспирант
Отправить личное сообщение для sexyQuery Посмотреть профиль Найти все сообщения от sexyQuery
 
Регистрация: 23.06.2013
Сообщений: 54

я так понял ipv4 может быть только на конце
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странно себя ведет простейшая проверка введенных данных в форме San4eZ Общие вопросы Javascript 7 06.10.2011 09:17
Просьба покритиковать код stnw Ваши сайты и скрипты 1 10.02.2011 16:59
ввод и проверка адреса cyklop77 Элементы интерфейса 0 01.11.2010 23:50
код в зависимости от адреса страницы Levin Общие вопросы Javascript 10 06.07.2010 08:02