crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QRegExp vs IP адрес, какое выражение применить чтоыб вычеслить IP ?
flankerr
  опции профиля:
сообщение 10.7.2008, 14:16
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


предположим надо проверить является ли строка простым текстом или IP адресом
т.е.
строка
"192.168.10.15" это IP адрес
а вот строки:
"500.345.112.0" или "123.123.figa" и т.п. IP адресом не являються

сразу отсекаем строки где есть не цифры

QRegExp reg1("[a-zA-Z\\\,\:\?\!\@\#\$\%\^\&\*]+"); \\т.е отсекаем всё кроме цифр и символа "точка"
QRegExp reg2 \\а вот это самое интеерсеное и об этом ниже
int r1 = reg1.indexIn(qstr);
int r2 = reg2.indexIn(qstr);
if(strReg.indexIn(qstr) == -1)
{
  if(k != -1)
  {
    // строка это IP алрес
  }
}


для начала чуть локализуем для простоты:
надо распознать диапазон от 0 до 255 и разделить их точками
т.е. строки
"000" "00" "0" "5" "55" "255" нам подходят
а вот строки
"1234" "257" "311" и т.п. нам НЕ подходят

навскидку вариант первый: ([0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$

но он НЕ даёт желаемого
символ '$' пчоему то НЕ ограничивает строку или я не понмаю как его использовать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 10.7.2008, 14:47
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


решение нашлось:)

чтобы символ '$' отрабатывал ожилаемо его надо использовать в паре с символом начало строки '^'

а искомый шаблон для IP адреса выглядит так:
"^(([0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 17.7.2008, 9:39
Сообщение #3


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


вот еще вариант рег. выражения для ip-адреса:
QRegExp("[0-9]{,3}\\.[0-9]{,3}\\.[0-9]{,3}\\.[0-9]{,3}");
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 21.7.2008, 17:41
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(void* @ 17.7.2008, 10:39) *
вот еще вариант рег. выражения для ip-адреса:
QRegExp("[0-9]{,3}\\.[0-9]{,3}\\.[0-9]{,3}\\.[0-9]{,3}");

неа :rolleyes:
допустим "999.999.999.999" разве это IP адрес ? ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.7.2008, 17:45
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


на прогорге вымучивали долго, но вымучили этот регэксп
вроде такой вариант был: QRegExp rx( "\\b(([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\b" );
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 23.7.2008, 13:07
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


мне больше нравиться мой вариант как более наглядный :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 16:04