На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
  
    > Регулярные выражения
      Может кто знает почему при проверке майла пользователя таким регулярным выражением:   ([0-9a-zA-Z\.-_]+)@([0-9a-zA-Z\.-_]+)
      прокатывает следующий майл a@b~!#$\%^.ru

      Используется функция ereg PHP4.2
        Все, дошло!
        Уже не надо.
          Хорошим тоном считается показать, что именно было неправильно.
          Это весьма поучительно, следить за чужими шишками :)
            Попробуйте обмануть

            ^[a-z0-9_-]+@([a-z0-9_-]+[\.]?)*([a-z0-9_-]+)\.[a-z0-9]+$

            Такая фигня стоит у меня в гостевой книге (http://andyag.far.ru). Только перед ней e-mail переводится в нижний регистр.

            Хакнет кто-нибудь? :-)
              Вообще то я не настолько крут в рег. выражениях поэтому сделал проще
              ^([0-9a-zA-Z\.-_]+)@([0-9a-zA-Z\.-_]+) $
              2vot-sorry в след. раз исправлюсь.
              2Andyag-спасибо за дополнение (подсказку). ;)
                Кстати может лучше так:
                ^([a-z0-9A-Z_-]+[\.]?)@([a-z0-9A-Z_-]+[\.]?)*([a-z0-9A-Z_-]+)\.[a-z0-9A-Z]+$

                мэйл же может быть таким: Ivan.Ivanov@mail.ru
                А?
                  А Ivan.Ivanov.@mail.ru - не может (или может?), значит надо что-то вроде

                  ^([a-z0-9A-Z_-]+[\.]?)[a-z0-9A-Z_-]+@([a-z0-9A-Z_-]+[\.]?)*([a-z0-9A-Z_-]+)\.[a-z0-9A-Z]+$

                  :-)
                    Вообще-то на майлы типа
                    Asdf.AdfA@XXX.ru
                    это рег выражение ругается - очевидным образом: no matches
                    "^[a-z0-9_-]+@([a-z0-9_-]+[\.]?)*([a-z0-9_-]+)\.[a-z0-9]+$"
                    Не все случаи рассмотрены(нет точки и заглавных букв)
                    Хотя с заглавными буквами фигня - можно strtolower() сделать.

                    Это выражение тоже не очень
                    ^([a-z0-9A-Z_-]+[\.]?)[a-z0-9A-Z_-]+@([a-z0-9A-Z_-]+[\.]?)*([a-z0-9A-Z_-]+)\.[a-z0-9A-Z]+$
                    Не пропустит майл типа Ivan.Ivanich.Ivanov@mail.ru
                    Есть предложения по апгрейду или сдадимся на милость пользователя?
                    Кто-же знает сколько точек он наставит.

                    Похоже что правильней всего так:
                    ^([a-z0-9A-Z_-\.])@([a-z0-9A-Z_-\.])*([a-z0-9A-Z_-]+)\.[a-z0-9A-Z]+$
                      Ошибка
                      Так
                      ^([a-z0-9A-Z_-\.])@([a-z0-9A-Z_-]+[\.]?)*([a-z0-9A-Z_-]+)\.[a-z0-9A-Z]+$
                        Извиняюсь за возможный спам - опять ошибся:
                        Вот последняя версия:
                        $regmail="^([a-z0-9A-Z\._-]+)@([a-z0-9A-Z_-]+[\.]?)*([a-z0-9A-Z_-]+)\.[a-z0-9A-Z]+$";
                          2Алексей:
                          В своем сообщении от 16.05.02 20:20:17 я написал, что цитирую: "Только перед ней e-mail переводится в нижний регистр". :-)
                          Регулярные выражения это вообще довольно интересная тема, но только вот можно глаза сломать от этих шаблонов... :-)
                          Насчет проверки e-mail'а в php теперь можно FAQ выпускать... :-)
                          Вобщем, я еще попробую поизвращаться на эту тему.

                          2All:
                          А, кстати, ни кто не знает номер RFC, где была бы прописана спецификация e-mail'ов?

                          2vot:
                          Кстати, товарищьчь vot почему еще нету "WWW Masters FAQ"?
                            Возьмешься вести его?
                              2Vot:
                              В принципе, без проблем. И даже с большим удовольствием. Но вот только, не прямо сейчас, а несколько позже... Просто сейчас сессия и все такое. Освобожусь где-то в начале июня.

                              Правда, несколько напрягает, что в этой части форума сейчас всего 53 темы...

                              Нельзя ли пока сделать сложную тему типа "Делаем FAQ - присылайте вопросы и ответы"?
                              Сообщение отредактировано: andyag -
                                2Алексей:
                                Как тебе такая фишка:
                                ^([a-z0-9_-]+[\.]?)*[a-z0-9_-]+@([a-z0-9_-]+[\.]?)*([a-z0-9_-]+)\.[a-z0-9]+$
                                :-)
                                Сообщение отредактировано: andyag -
                                  Господи, до чего ж матершинный язык! ;)
                                    Смотрится, конечно, впечатляюще, но сказать это довольно трудно... :-)
                                      Цитата andyag, 17.05.02, 20:32:39
                                      2Алексей:
                                      Как тебе такая фишка:
                                      ^([a-z0-9_-]+[\.]?)*[a-z0-9_-]+@([a-z0-9_-]+[\.]?)*([a-z0-9_-]+)\.[a-z0-9]+$
                                      :-)


                                      По моему не очень  :(
                                      Отсекаешь майлы типа
                                      xxx.yyy@aaa.bbb.ccc.ru (конец строки)
                                      xxx.yyy.zzz@aaa.ru (начало строки)

                                      Просто я по работе  с таким зверьем встречался

                                      Мне кажется оптимально:
                                      ^([a-z0-9\._-]+)@([a-z0-9_-]+[\.]?)*([a-z0-9_-]+)\.[a-z0-9]+$
                                      потому что с точками могут быть проблемы.
                                        2 Andyag Вообще говоря в принципе не угадаешь что вводит пользователь и любая проверка мэйла должна сводиться к исключению полной лажи - случайных ошибок.
                                        Тот кому надо послать тебе ложную информацию в любом случае найдет метод сделать это. Ну прям как в той загадке: Как обмануть человека? - Скажи ему что ты его обманул!
                                        Поэтому по большому счету это все конечно изыски и приукрасы - но веселые ;D.

                                        2 vot Раз уж вы хотите создать новый форум то сделайте его по HTML'у а то кучи всяких вопросов касающихся именно HTML льются в разделы JS и W-мастерс.
                                        По моему было бы логично.  Это так мысли вслух  ;)
                                          2Алексей:
                                          Возможно, я не правильно его вставил. Вот еще раз:
                                          "^([a-z0-9_-]+[\.]?)*[a-z0-9_-]+@([a-z0-9_-]+[\.]?)*([a-z0-9_-]+)\.[a-z0-9]+$"
                                          Примеры, приведенные тобой им вполне пропускаются: никаго отсечения нет... Можешь попробовать сам:
                                          <?php      $Email = "xxx.yyy.zzz@aaa.ru"; // "xxx.yyy@aaa.bbb.ccc.ru"      if(!ereg("^([a-z0-9_-]+[\.]?)*[a-z0-9_-]+@([a-z0-9_-]+[\.]?)*([a-z0-9_-]+)\.[a-z0-9]+$", $Email))            printf("wrong\n");      else            printf("ok\n");?>


                                          Создавать новый форум никто не собирался, просто от меня поступило предложение заняться изготовлением FAQ (frequently asked questions) по этому форуму. :-)
                                            Цитата Алексей, 17.05.02, 22:05:24
                                            2 vot Раз уж вы хотите создать новый форум то сделайте его по HTML'у а то кучи всяких вопросов касающихся именно HTML льются в разделы JS и W-мастерс

                                            А как вы посмотрите на объединенный раздел HTML + JavaScript ?
                                            Мне кажется, так будет еще более логичней.
                                            ы?
                                              2 Andyag - да нормально работает.
                                              Неплохой метод..  ;)

                                              2 vot - можно и так.
                                                2 Andyag
                                                Как поправил гостевуху?
                                                Оказывается истина рождается не только в споре но и в обсуждении чужих глюков! :D
                                                  2 Алексей:
                                                  В хорошем настроении я полез по FTP править свою гостевуху. Подключился. Нету ни одного файла. Думаю: хакеры. Потом мыло прочитал, хостер говорит: "типа нету нашей рекламы уже довольно долгое время, так что обломись". Вот я и обломился. :-(

                                                  Наехал на админа: "типа че делать?". Теперь жду ответа... :-(

                                                  Если разблокируют, повешу их рекламу в размере 1x1 пиксель (см. счетчики на главной странице форума sources.ru снизу) :-)

                                                  Короче, отстой полный :-(

                                                  2 Vot:
                                                  Ну дык что? Будем делать сложную тему с призывом присылать вопросы и ответы или как? (см. сообщение в этой теме 17.05.02 20:14:59).
                                                    Помнишь когда то обсуждали какой хостинг лучше holm.ru или webservis.ru
                                                    Теперь я вообще в непонятках - webservis  что требует чтобы ты сам вешал их рекламу??
                                                    На holm'е то ребята умнее - там в твой код сразу внедряется ихний баннер.
                                                    Я тоже попытался вывесить свою пагу - но как увидел это мигающее уродство (баннер)
                                                    сразу забил... Теперь ничего не вешаю.
                                                      На webservis'е они выдают html-файл с рекламой (там прописан id моего сайта). Этот файл нужно средствами SSI влепить у себя на странице. Но этот файл можно подправить, чтобы типа "<img src='...' width=1 height=1>". Тогда реклама будет идти, сайт будет тормозить, а баннер будет почти не видно. :-)
                                                        А вообще они смотрят по отношению траффика твоего сайта к траффику их рекламы. Т. е. можно просто взять и подгрузить самому их баннер 500 раз (через тот же SSI), а потом не показывать. Тоже вариант... :-)
                                                          А ведь мыло может содержать и такие символы: &!*" и т.д.
                                                          А ни один из предложенных вариантов такого не пропустит.
                                                            Ну, паталогические случаи можно не рассматривать  :D
                                                            Такие только в больнице ампутируют
                                                              2 Relan: где ты видел такой изврат? "procter&gamble!!!"@mail*server.org?
                                                              Сообщение отредактировано: andyag -
                                                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                              0 пользователей:


                                                              Рейтинг@Mail.ru
                                                              [ Script execution time: 0,0553 ]   [ 15 queries used ]   [ Generated: 27.04.24, 23:46 GMT ]