На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
    > Регулярные выражения
      Может кто знает почему при проверке майла пользователя таким регулярным выражением:   ([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 -
                                  Господи, до чего ж матершинный язык! ;)
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0358 ]   [ 15 queries used ]   [ Generated: 28.04.24, 16:57 GMT ]