Это регулярное выражение проверяет 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; }
Спасибо огромное, именно то что я искал и даже лучше =) И вам спасибо. Эта функция возвращает false если ip введен не верно и true если верно?
Еще 1 вопрос по поводу сайта http://www.pcre.ru/ там синтаксис соответствует функции ereg как я понимаю, а preg_match нет, они что так сильно различаются?
Странно, тут 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; } Почему?
И вот с этим выражением тоже самое =\ ^[\na-zа-я0-9 _!?()&+`~#%№:"|^@,/.;$*-]{1,1700}$ На том сайте работает корректно а в php скрипте все время возвращает false...
Нашел причину неработоспособности 2 выражения... Почему-то когда ставлю максимальное значение количества символов больше 250 выражение перестает адекватно работать, так и должно быть?
добрый день! подскажите, как можно ограничить адреса с 10.104.*.* до 10.111.*.* с использованием регулярных выражений. У меня получилось вот так: "/\.10\.1?[0-1]1|{4-9}\.[0-2]{1,3}\.[0-2]{1,3}/" Правильное ли это выражение ??