За последние 24 часа нас посетили 64479 программистов и 1740 роботов. Сейчас ищет 1981 программист ...

Проверка правильности IP адреса(регулярное выражение)

Тема в разделе "PHP для новичков", создана пользователем Crystallon, 15 июн 2011.

  1. Crystallon

    Crystallon Активный пользователь

    С нами с:
    7 фев 2010
    Сообщения:
    61
    Симпатии:
    0
    Это регулярное выражение проверяет IP на правильность, но у него есть недоработка, последний ряд чисел никак не ограничен по количеству(1,2,3 ряды чисел нормально ограничены в рамках 1-3 числа), как ограничить последний ряд? Я конечно понимаю что можно просто накрутить костыль например отдельно проверив длину строки, но я не хочу костылей.
    И еще дополнительная просьба - дайте пожалуйста ссылочку где на русском описано обозначение всех символов используемых в регулярных выражениях на php чтобы я мог сам их составлять, ато вижу эту строчку, а какой символ что обозначает могу только догадываться или узнавать методом научного тыка(что не особо продуктивно), ссылку прошу не потому что мне лень использовать поиск а потому что именно на русском языке я ничего дельного не нашел.

    function checkIP($ip) {
    if (!preg_match("/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/", $ip)) {
    return false;
    }
    return true;
    }
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
  4. Crystallon

    Crystallon Активный пользователь

    С нами с:
    7 фев 2010
    Сообщения:
    61
    Симпатии:
    0
    Спасибо огромное, именно то что я искал и даже лучше =)

    И вам спасибо. Эта функция возвращает false если ip введен не верно и true если верно?
     
  5. Crystallon

    Crystallon Активный пользователь

    С нами с:
    7 фев 2010
    Сообщения:
    61
    Симпатии:
    0
    Еще 1 вопрос по поводу сайта http://www.pcre.ru/ там синтаксис соответствует функции ereg как я понимаю, а preg_match нет, они что так сильно различаются?
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    для preg_ шаблон обрамляется /

    '/[a-zA-Z]/'
     
  7. Crystallon

    Crystallon Активный пользователь

    С нами с:
    7 фев 2010
    Сообщения:
    61
    Симпатии:
    0
    Странно, тут http://www.pcre.ru/eval/ такое выражение работает нормально
    ^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}$

    а в php скрипте дает false
    function checkIP($ip) {
    if (eregi("^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}$" , $ip) == NULL) {
    return false;
    }
    return true;
    }
    Почему?
     
  8. Crystallon

    Crystallon Активный пользователь

    С нами с:
    7 фев 2010
    Сообщения:
    61
    Симпатии:
    0
    И вот с этим выражением тоже самое =\
    ^[\na-zа-я0-9 _!?()&+`~#%№:"|^@,/.;$*-]{1,1700}$
    На том сайте работает корректно а в php скрипте все время возвращает false...
     
  9. Crystallon

    Crystallon Активный пользователь

    С нами с:
    7 фев 2010
    Сообщения:
    61
    Симпатии:
    0
    Нашел причину неработоспособности 2 выражения... Почему-то когда ставлю максимальное значение количества символов больше 250 выражение перестает адекватно работать, так и должно быть?
     
  10. Crystallon

    Crystallon Активный пользователь

    С нами с:
    7 фев 2010
    Сообщения:
    61
    Симпатии:
    0
    Тему можно закрывать.
     
  11. Анастасия09

    Анастасия09 Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    1
    Симпатии:
    0
    добрый день! подскажите, как можно ограничить адреса с 10.104.*.* до 10.111.*.* с использованием регулярных выражений. У меня получилось вот так: "/\.10\.1?[0-1]1|{4-9}\.[0-2]{1,3}\.[0-2]{1,3}/" Правильное ли это выражение ??
     
  12. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    /^10\.1(0[4-9]|1[01])\./