работаю с регулярными выражениями

stalxed

Новичок
работаю с регулярными выражениями

Возможно тема уже и измучена...но мной изучается только сейчас.
В общем нужно сделать проверку email and icq.
Вот написал проверку аси:
PHP:
if (!preg_match('![1-9]{5,9}!', $_POST[icq], $matches, PREG_OFFSET_CAPTURE, 1)) 
{ $error.="Вы не вверно ввели данные в поле icq.<p>";}
Но тут есть баг! Ася 161225 подходит, ffff не подходит! а ffff161225 подходит!!! как я понял функция preg_match ищет совпадения в тексте, а не полное совпадение с шаблоном! как это исправить?
по поводу мыла использую регулярное выражение http://community.livejournal.com/ru_programming/47239.html в preg_match! но оно не работает интерприкатор php ругается!
PHP:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in 
C:\xampp\xampp\htdocs\autostarina\libs\lib.php on line 86
Собственно вот какие дела... Поиском и гуглом пользовался - не помогли, поэтому прошу помощи тут)
 

magic

lancer
попробуй
PHP:
preg_match('/^\d{5,9}$/')
-~{}~ 04.02.07 18:06:

и вот так
PHP:
preg_match("/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/")
 

stalxed

Новичок
хм понял! ты сделал регулярку проверяющую начало строки...
в мане написано
/.../x - игнорировать пробелы и переводы строк (для удобства).
тогда не лучше ли будет
preg_match('/^\d{5,9}$/x') как я понимаю он будет считать что в переменной одна строка? или я ошибаюсь?
по поводу ^начала и $конца я и не подумал)

-~{}~ 04.02.07 19:09:

а по поводу мыла охото поюзать то здоровое выражение, но не получается(

-~{}~ 04.02.07 20:39:

с icq разобрался! спасибо! а вот регулярное выражение электронной почты не очень.., этот имэйл оно пропускает
d.....d.w3@[email protected] ! нужно как то применить выражение по ссылке http://community.livejournal.com/ru_programming/47239.html но у меня оно не получается... помогите! как его применить?
 

AmdY

Пью пиво
Команда форума
насчёт icq, проверяй его только на цифры, {5,9} - это не совсем верно, номер может быть длиннее ;), есть такая фишка.
 

stalxed

Новичок
2 AmdY нет стандартный номер 5-9, длиннее нету! короче только у американских служателей icq!!!!!!!!!!!
 

AmdY

Пью пиво
Команда форума
как-то читал, что к номеру аськи можно прибавлять определённое число и получать длинные номера. проверял работает, ICQ даже ищет и находит по длинным номерам. QIP - нет.
 

donflash

Вареник клуба
Автор оригинала: st@l][ED
2 AmdY нет стандартный номер 5-9, длиннее нету! короче только у американских служателей icq!!!!!!!!!!!
Бред сивой кобылы в лунную ночь
 

Фанат

oncle terrible
Команда форума
этот имэйл оно пропускает
d.....d.w3@[email protected]
а какая разница? Ну проспустит, и что?

-~{}~ 05.02.07 18:35:

magic
вот не пойму ни хрена.
почему вы все так стремитесь проверить ВСЮ строку?
сколько раз вижу такое элегантное решение этого "редкого" вопроса - столько раз удивляюсь
 

AmdY

Пью пиво
Команда форума
Автор оригинала: st@l][ED
2 AmdY нет стандартный номер 5-9, длиннее нету! короче только у американских служателей icq!!!!!!!!!!!
считай себя одним из них 4514076962 :D

Кстати, насчёт проверки мэйла, в целях секъюрности лучше не пропускать точку в логине, был когда-то весёлый глюк в gmail
 

kruglov

Новичок
AmdY
Одно дело "веселый глюк", который был когда-то, другое - RFC, который был, есть и будет.
 

Marquis

Новичок
st@l][ED
если я укажу в виде мыла [email protected]
и аськи 000000000
тебе легче станет?
может я и не догоняю фишки но НАФИГА нужны все эти супер валидаторы если пользы от них 0 ?

а по поводу мыла охото поюзать то здоровое выражение, но не получается(
5 баллов, насмешило. :)
 

RomanZ

Новичок
Я бы сделал так:

if( preg_match('/([0-9]*)/', $_POST[icq], $res) )
{
тут проверяем что в массиве $res получилось, если всякой белиберды полно то веденно неверно.
}
 

Фанат

oncle terrible
Команда форума
RomanZ
Делать-то ты можешь как угодно, но зачем же позориться, выкладывая на всеобщее обозрение?
 

RomanZ

Новичок
"но зачем же позориться?"
Я хотя бы попытался человеку помочь, а отличии от вас.


Добавил начало и конец строки (^ и $) -- работает, проверил.

if( preg_match('/^([0-9]*)$/', $_POST[icq], $res) )
{
print_r($res);
}
 

AmdY

Пью пиво
Команда форума
ну если помочь хотел, тогда измени '/^([0-9]*)$/' на '/^([0-9]+)$/' , а то не работает, проверил.
 

Фанат

oncle terrible
Команда форума
Давай ты не будешь мне говорить, что делать? Я тогда не скажу, куда тебе пойти.
Я хотя бы попытался человеку помочь
было бы ГОРАЗДО ЛУЧШЕ, если бы ты попытался прочитать тему перед тем, как в неё писать.
работает, проверил.
ну конечно. без твоей проверки не заработало бы.
 

RomanZ

Новичок
Автор оригинала: Фанат
Давай ты не будешь мне говорить, что делать? Я тогда не скажу, куда тебе пойти.
было бы ГОРАЗДО ЛУЧШЕ, если бы ты попытался прочитать тему перед тем, как в неё писать.
Спасибо Вам огромное за мудрый совет, впредь 10 раз подумаю, прежде, чем написать на этот удивительно доброжелательный форум.
 

Фанат

oncle terrible
Команда форума
молодец, соображаешь.
возможно, со временем из тебя выйдет толк.
 

stalxed

Новичок
эххх создал тему, вроде не очень умную, но и не тупую...а тут пошёл базар вокзал.... Ребят не надо перепитий друг с другом!
2 donflash
хм по поводу более длинных icq видел скрипт типо увеличивать по формуле номер...но это скажем дыра(не знаю действует ли сейчас...), а не стандартная возможность! И номеров короче 5 я не видел( поэтому стандартный номер это от 5до9 сиволов!
По поводу регулярки проверки мыла Фанат ты прав в какой-то мере что такая проверка не нужна! Но я так не для сайта это хотел посматреть а просто заценить регулярное выражение в учёбных целях!
 

SelenIT

IT-лунатик :)
Автор оригинала: st@l][ED
Ребят не надо перепитий друг с другом!
[offtop]
Перепитий в одиночку/с зеркалом тем более не надо) Пить, как и все остальное, хорошо исключительно в меру!))
[/offtop]
 
Сверху