Jump to content
  • 0

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


ataman
 Share

Question

Всем привет !!

 

Очередная проблема. В общем регулярки....

 

Есть у меня такое регулярное выражение для проверки e-mail

([\w-\.]+)@\D((?:[\w]+\.)+)([a-zA-Z]{2,4}) 

 Но она пропускает адреса такого типа: 

qwerty..qwerty@gmail.comqwerty.@gmail.com.qwerty@gmail.com

Как дописать регулярное выражение, что б отфильтровать эти точки ?

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Валидация - философский вопрос.

 

 


 

Есть у меня такое регулярное выражение для проверки e-mail ([\w-\.]+)@\D((?:[\w]+\.)+)([a-zA-Z]{2,4})

 

Если память не изменяет, то [\w-\.]+ - любой символ и минус и точка  сколь угодно раз. Т.к. [ ] - это один символ, то совмещать под одним квантификатором их трудновато. хм... можно попробовать что-то вроде такого: ^(\w)+(\w*[\.-]?\w+)+@  -  Но вот производительность... не тестил. Но так как изначально выбрано \w - то "_" он пропускает

ммм... или с рекурсией  /^(\w)+((?1)*[\.-]?(?1)+)+@

http://codepad.viper-7.com/AHwMxf

UPD.

Edited by bryknyk
Link to comment
Share on other sites

  • 0

Одну собаку проверить и все... Если почитать спецификацию на е-мейл адреса - можно голову сломать от того, что там оказывается может быть и с бухты барахты это не осилить - нужно сидеть и внимательно вчитываться, чтобы написать именно соответствующий ей валидатор, а не отсебятину. 

Вот один из примеров подобной регулярки.

 (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*  |  "(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]      |  \\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@ (??:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?  |  \[(??:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}       (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:          (?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]          |  \\[\x01-\x09\x0b\x0c\x0e-\x7f])+)     \]) 

http://en.wikipedia.org/wiki/Email_address А зачем писать то, что уже кем-то написано.

 

А вообще input type email и забить.
 

А если очень надо - поставить плагин validator http://jqueryvalidation.org/

Edited by Zverushka
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By adminfilm
      Всем привет, как парсить класс в регулярных выражених, если он не во всех местах?
      Вот пример html

      Вот написанный код
      https://regex101.com/r/ea70gt/1

      Код работает нормально когда удаляю class=\"(.+?)\", однако он не парсит class, а когда добавляю класс не работает из-за того что не во всех местах есть класс.
      Как решить данный вопрос?
    • By Yummo
      Доброго времени суток.
      Столкнулся с проблемой в верстке email шаблона. А именно: почтовом клиенте outlook не растягивается фоновая картинка до размеров родительского элемента.
      Вот фрагмент кода:
        <table width="600">
         <tr>
           <td bgcolor="#363636" style="background-image: url('http://s020.radikal.ru/i704/1703/7c/9068bb4c342dt.jpg');"
             background="http://s020.radikal.ru/i704/1703/7c/9068bb4c342dt.jpg" width="600" height="200">
             <!--[if gte mso 9]>
             <v:rect style="width:600px;height:200px;" strokecolor="none">
               <v:fill type="tile" color="#363636" src="http://s020.radikal.ru/i704/1703/7c/9068bb4c342dt.jpg" /></v:fill>
             </v:rect>
             <v:shape id="NameHere" style="position:absolute;width:600px;height:200px;">
             <![endif]-->
           <p>Тут находится содержимое</p>
             <!--[if gte mso 9]>
             </v:shape>
             <![endif]--></td>
         </tr>
       </table> 
    • By li4e
      Добрый вечер. Есть популярный плагин https://jqueryvalidation.org/ для валидации форм. Всё хорошо, но нужно изменить очередность применения правил.
      При инициализации плагина при указании правил, независимо от того в каком порядке они указаны, применяться в первую очередь все равно будет правило "email", а нужно чтобы в первую очередь проверялось "kir_mail". То есть, чтобы пользователь видел ошибку о том что он использует кириллические символы до того как он напишет почту в правильном формате.
      rules: { email: { required: true, kir_mail: true, email: true, emailBlackList: true } } Какой день уже ищу решение, но что то не нашел можно ли сделать возможностями плагина. Помогите пожалуйста, если сталкивались с подобным или знаете как сделать, заранее спасибо.
    • By Antoshka007
      Привет, форумчане!

      Подскажите, в чем может быть дело?

      Возникла проблема с PHPMAiler. PHP ругается на то, что в 1197 строке файла class.phpmailer.php не найден класс SMTP. 
      Кто-нибудь сталкивался с подобной проблемой?

      Заранее спасибо?
    • By cyklop77
      помогите пожалуйста советом. не пойму в каком направлении искать ошибку
       
      для отправки писем с лендинга я использую следующий код:
      $name = mb_substr(htmlspecialchars(trim($_POST['Editbox1'])), 0, 1000, 'UTF-8');$phone = mb_substr(htmlspecialchars(trim($_POST['Editbox3'])), 0, 1000, 'UTF-8');$email = mb_substr(htmlspecialchars(trim($_POST['Editbox2'])), 0, 1000, 'UTF-8'); $mess = ' Заявка от ' . $name . '. Номер телефона: ' . $phone;$to = 'dffd@dfdf.ru'; $from = $email; if(mail($to, 'Заявка с сайта dfdf.ru', $mess, 'Content-type: text/plain; charset=utf-8' . "\r\n" . 'From:'.$from)){ header('Location: '.'./form-ok.php');}проблема в том, что на старом моём хостинге он отправлял письма, а на новом не работает. тех.поддержка будет доступна только завтра, а мне проблему желательно решить сегодня
       
      кто-нибудь сталкивался с подобной проблемой отправки писем? в чём, думаете, причина? в кривом коде или нужно что-то включить на сервере?
       
      ps
      пробовал выводить значения из массива POST. всё верно. так же проверял успешно ли отрабатывает mail(). успешно
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy