2012-04-29 4 views
0
//if HTML5 input email input is not supported 
if(type == 'email'){  
    if(!Modernizr.inputtypes.email){ 
     var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@([a-zA-Z0-9\-])+\.+([a-zA-Z0-9]{2,4})+$/;    
     if(!emailRegEx.test(value)){ 
      this.focus(); 
      formok = false; 
      errors.push(errorMessages.email + nameUC); 
      return false; 
     } 
    } 
} 

Это мое регулярное выражение javascript для проверки правильности формата электронной почты. Но когда я сам это пробовал, он не показывает никаких ошибок для любого .. @ .. Он не проверяет .com или что-то еще в конце. Что я делаю не так?Ошибка проверки электронной почты Regex - с использованием JavaScript

+5

У меня слишком много прописных букв в заголовке вопроса. И это регулярное выражение ужасно. Существуют TLD, длина которых превышает 4 символа, и '+' будет совершенно корректным в локальной части адреса электронной почты. Он также терпит неудачу в IDN. – ThiefMaster

ответ

1

Вам нужно использовать регулярное выражение, которое действительно подходит для адреса электронной почты. Твой текущий полностью разрушен, так как есть много действительных адресов, которые он не примет.

См. http://www.regular-expressions.info/email.html для более подробного описания и аргументов, почему регулярное выражение не является такой хорошей идеей в конце концов.

Во всяком случае, вот один, который, вероятно, подходит для ваших нужд:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? 

Вот что regular-expressions.info говорит об этом регулярном выражении:

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

+0

Я решил не использовать регулярное выражение и полагаться на проверку html 5 для электронных писем. Это непротиворечиво, я знаю, и опера не показывает ошибки для *. *, Но почта не приходит ко мне. Но все же это полезно – showbiz

Смежные вопросы