На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
  
    > регулярное выражение для валидности email , предложите оптимизацию
      Здравствуйте, Господа!
      Я в регулярках совсем темный, но встала задачка проверять вводимый email на валидность. Тема избитая со страшной силой, однако, толкового решения не увидел, кроме проверки на наличие '@' в строке :)
      В общем, поковырял я инет и... Если хочешь хорошо - сделай сам!
      ExpandedWrap disabled
        /\w+_*-*\.?\w+@\w+_?\.*-?\w*\.?\w*\.\w{2,9}/

      Это мое изобретение. Можете что-то предложить для оптимизации, но без существенного усложнения?
      Разумеется, на панацею не претендую. Нас избавила от панацеи RFC822.
      Впрочем... решение предложено! :)
      Честно скажу: не обладая некоторым опытом сообразить что-то стоящее, чертовски тяжело!
      Для упрощения разработки сделал onlain калькулятор для регулярок.
      ExpandedWrap disabled
        <!doctype html>
        <html>
        <head>
        <meta charset="windows-1251">
        <title>Online regexp</title>
        </head>
        <body>
         
        <form name="calc">
        <table>
            <tr><td>Исходная строка</td><td> </td><td><input type="text" name="source" size="50" value="12345.67"/></td></tr>
            <tr><td>Регулярное выражение</td><td>/</td><td><input type="text" name="rege" size="50" value="[0-9]+\.?[0-9]{1,4}"/>/</td></tr>
            <tr><td>Результат</td><td colspan="2"><input type="text" name="result" size="50" disabled/></td></tr>
            <tr><td  colspan="3"align="center"><a href="#" onClick="calculate()">Применить</a></td></tr>
        </table>
        </form>
         
        <script>
        function    calculate()
        {
            var src = document.forms[0].elements[0].value;
            var reg = document.forms[0].elements[1].value;
            //Получили значения полей
            
            reg = new RegExp(reg);
            
            src=reg.exec(src);
            document.forms[0].elements[2].value = src;
        }
        </script>
         
        </body>
        </html>

      Код скопипастен с моей рабочей странички. Работает. Может кому-то поможет.
      Опять же. Сие - рабочая лошадка. Оптимизацией не занимался, да и в javascript я новичок. Так что просьба - сильно не пинать.
      PS Редактировал, т.к. обнаружил очерпятки в коде. На работу они не влиляли, но впечатление портили
      Сообщение отредактировано: HighMan -
        Трудолюбивые извращенцы портируют DOOM на калькуляторы, пишут 3D-шутеры весом 95 КБ, играют музыку на флоповодах. Ленивые пытаются решить любую проблему с помощью регулярки.

        Автор, ты своим "изобретением" сразу отсекаешь множество потенциальных посетителей. Например, отсечется вполне валидный j-r-doe+another_stupid_site@e-mail.my-site.foundation. И это еще без учета punicode и нелатинских доменных имен.
          Достаточно наличия @, с остальным разберется почтовый сервер. Лучше послать пару мейлов на несуществующие адреса, чем отсекать валидные.
            Цитата AVA12 @
            Автор, ты своим "изобретением" сразу отсекаешь множество потенциальных посетителей. Например, отсечется вполне валидный j-r-doe+another_stupid_site@e-mail.my-site.foundation. И это еще без учета punicode и нелатинских доменных имен.

            Я выше писал, что добиться идеальной валидности не реально. Приходится выбирать: или проверять наличие @, или жертвовать некоторым кол-вом случайных посетителей. Я консерватор. Мне топор палача намного ближе либеральных ценностей.
            Этот "валидатор" пишу для сайта с не гигантской посещаемостью. Скорее всего, случайных людей на нем будет совсем не много. Даже сам сайт, скорее, как визитная карточка, нежели, рабочий инструмент. Вот потому и можно отсекать не жалеючи.
            В самом деле, мне как-то трудно воспринимать письма из зон .рф, .biz и прочую шалупонь. Почтовый сервер настроен сразу таких откидывать. 90% писем отсекаются по BlackList и зонам. И знаете что интересно? Всех, на работе, это устраивает!
            Так что пусть, валидные по RFS822, j-r-doe+another_stupid_site@e-mail.my-site.foundation идут лесом. Пусть не мешают нормальным людям работать, а занимаются распостранением спама, порно и виагры. Кесарю - кесарево.
              Конечно, мой пример почтового адреса слишком утрирован, но возможны и более простые, честные варианты, которые "продвинутый" регвыр не пропустит. Например, некоторые почтовые сервера допускают адреса вида логин+тег@домен, что дает клиентам дополнительные возможности для фильтрации писем. Я вполне допускаю мысль, что у автора темы некоммерческий сайт, который требует огромных затрат и уже не справляется с потоком пользователей, так что автор вполне может диктовать посетителям, какие почтовые сервисы им использовать и как именно. Но все равно - некультурно как-то.
                Цитата Pacific @
                Достаточно наличия @, с остальным разберется почтовый сервер. Лучше послать пару мейлов на несуществующие адреса, чем отсекать валидные.

                +1

                Цитата
                /.*?@.*?/


                Добавлено
                Цитата HighMan @
                j-r-doe+another_stupid_site@e-mail.my-site.foundation идут лесом. Пусть не мешают нормальным людям работать, а занимаются распостранением спама, порно и виагры. Кесарю - кесарево.

                если у меня почта kirill-nesmeyanov@sources.forum, я спамер? :)
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0211 ]   [ 15 queries used ]   [ Generated: 19.03.24, 03:53 GMT ]