Тема: Регулярные выражение

Ответить в теме
Показано с 1 по 19 из 19
  1. Вверх #1
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    39
    Сообщений
    64
    Репутация
    12

    По умолчанию Регулярные выражение

    Привет, есть вопрос по регулярным выражением, немогу правильно сформулировать идею, следовательно покажу на примере.

    Например нужно проверить ел. почтовый язык
    Регулярка к ниму
    Код:
    [^0-9][a-z0-9_]+@[a-z_]*\.[a-z]*
    Но если мыло будет
    тогда как учесть всё поддоменны и то что корневой домен должен быть в пределах {1,3}?
    Примеры на которые регульрное выражение должно совпадать
    Код:
    @freemail.memail.su
    @light.mail.corporation.net
    и т.д.
    Но не должно с
    Код:
    @freemail....memail.su
    @light.mail.domenru
    @rambler.mail
    и т.д.
    Есть идеи как это можно реализовать?


  2. Вверх #2
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    39
    Сообщений
    64
    Репутация
    12
    Есть еще грамадный и я предпологаю не ефективный способ
    Код:
    @[a-z_]*((\.)+[a-z]*)+\.([a-z][a-z])|(\2[a-z])$
    Вроде подходит, вот только запись будет верна
    Код:
    @freemail....mail.su
    как и
    Код:
    @freemail.mail.su
    Только
    Код:
    @freemail.mail.com
    уже не верно

    сейчас распишу по цветам
    Код:
    @[a-z_]*((\.)+[a-z]*)+\.([a-z][a-z])|(\2[a-z])$
    @freemail.mail.com
    как видите домен com уже не входи в цепочку хотя указано что
    Код:
    ([a-z][a-z])|(\2[a-z])
    2 либо 3 символа и все это являетса окончанием строки

    Притом запись вида
    Код:
    @freemail.com и @freemail.ru
    уже невходит в цепочку

    Как найти оптимальное решение?

  3. Вверх #3
    я вот такое пользую
    if(!eregi("^[a-zA-Z0-9\._-]+@[a-zA-Z0-9\._-]+\.[a-zA-Z]{2,4}$",$email)) { непраавильный мыл }

  4. Вверх #4
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    39
    Сообщений
    64
    Репутация
    12
    Цитата Сообщение от LiFeCoSt Посмотреть сообщение
    я вот такое пользую
    if(!eregi("^[a-zA-Z0-9\._-]+@[a-zA-Z0-9\._-]+\.[a-zA-Z]{2,4}$",$email)) { непраавильный мыл }
    Проанализировал твой пример и получаетса что твоя регулярка тоже не подходит
    так как на запись вида
    тоже будет верный вариант, но у нас в начале число и много точек, что в реальном мыле не допустимо

  5. Вверх #5
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    39
    Сообщений
    64
    Репутация
    12
    Немного добираюсь до истины
    Код:
    [^0-9][a-z0-9]+@[a-z0-9]+(\.{0,1}[a-z])*
    24mixail23me@freemail.ukrdkd.kdkd.ieiie..ksdfk..
    Лишнии точки не учитывает, но вот корневой домен должен быть от двух до трех символов. Подчеркнутый текст лишний, что нужно еще добавить в регулярку?

  6. Вверх #6
    скажи сколько ты подуровней хочешь что бы глотало ?

  7. Вверх #7
    проверил свой в действии:
    [email protected] пролазит как правильный

    а больше поддоменов я не видел

  8. Вверх #8
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    51
    Сообщений
    1,356
    Репутация
    256
    [^0-9][a-z0-9]+@([a-z0-9]+\.)+[a-z]{2,4}
    где-то так
    Велик и могуч русский язык, а пользоваться некому

  9. Вверх #9
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    39
    Сообщений
    64
    Репутация
    12
    Цитата Сообщение от LiFeCoSt Посмотреть сообщение
    проверил свой в действии:
    [email protected] пролазит как правильный

    а больше поддоменов я не видел
    По твое регулярке там и [email protected] пролазит
    Например kmx.ru там уровень входящих поддоменов не ограничен.
    например
    [email protected]

    З.Ы. Просто хотелось получить оптимальный вариант для проверки региляркой мыла

  10. Вверх #10
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    39
    Сообщений
    64
    Репутация
    12
    Цитата Сообщение от Guffy Посмотреть сообщение
    [^0-9][a-z0-9]+@([a-z0-9]+\.)+[a-z]{2,4}
    где-то так
    Вот это вариан! Спс

  11. Вверх #11
    [email protected] через мой тоже пролазило ... )
    Nitro - blood ---> Turbo - Heart

  12. Вверх #12
    Частый гость Аватар для Syon
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    53
    Сообщений
    946
    Репутация
    93
    при наличии тырнета - попробовать запросить MX record
    Ынщть.

  13. Вверх #13
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    39
    Сообщений
    64
    Репутация
    12
    Цитата Сообщение от Syon Посмотреть сообщение
    при наличии тырнета - попробовать запросить MX record
    Вы о чем?

  14. Вверх #14
    Постоялец форума Аватар для Guffy
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    51
    Сообщений
    1,356
    Репутация
    256
    шутит он так. пробить домен по днсу имеется ввиду. хотя в каждой шутке, как понимаешь...
    вообще кури rfc822 на тему формата мыльного адреса.
    и погугли regex test - нугуглиш кучу "проверяльщиков" выражений
    Велик и могуч русский язык, а пользоваться некому

  15. Вверх #15
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    39
    Сообщений
    64
    Репутация
    12
    Цитата Сообщение от Guffy Посмотреть сообщение
    ...
    и погугли regex test - нугуглиш кучу "проверяльщиков" выражений...
    Я хотел сам разобратса, в ходе обсуждения темы, я понял где были недочеты, и нашел, самый оптимальный вариант.

  16. Вверх #16
    Постоялец форума Аватар для sleep-walker
    Пол
    Мужской
    Сообщений
    1,042
    Репутация
    186
    Я вот так писал когда-то:
    Код:
    ^[a-z][a-z0-9\.\_\-]{1,15}@([a-z][a-z\_\-]{1,6}\.){1,3}[a-z]{2,3}$

  17. Вверх #17
    Посетитель
    Пол
    Мужской
    Сообщений
    212
    Репутация
    108
    Цитата Сообщение от Guffy Посмотреть сообщение
    [^0-9][a-z0-9]+@([a-z0-9]+\.)+[a-z]{2,4}
    где-то так
    [email protected] не проходит

    У каждого свой вариант [a-z\d][a-z\d_.%-]*@([a-z\d][a-z\d-]*\.)+[a-z]{2,4}

    Хотя решение уже давно есть:
    http://docstore.mik.ua/orelly/perl3/cookbook/ch06_20.htm
    Говоря по русски нет ни одного 100% подходящего варианта

  18. Вверх #18
    Частый гость Аватар для Syon
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    53
    Сообщений
    946
    Репутация
    93
    Ну понятно что спрашивать DNS это не регексы.
    Но у вас же стоит задача валидации мылоадреса.
    Вам нужны потом записи типа [email protected] ?
    Если подходят то нафига вообще верифаить ?
    А если нет, то регексы тогда нафиг и вперед в DNS.

    PS. Да, чуть было не забыл. Так вы тока домен пробъете. А вот на юзверя вам
    100% варианта вообще никто не даст. Даже SMTP чек.
    Ынщть.

  19. Вверх #19
    ИМХО если хочеш реальную валидацию мыла - надо при регистрации отсылать на него письмо со ссылкой для подтверждения. Никакой регексп этого не заменит.
    А вот если шибко навороченный регексп не пропуститт действительно существующее мыло - можно и юзера потерять.


Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения