2014-01-07 4 views
0

Я пытаюсь преобразовать (то, что я считаю) лучшей функцией проверки электронной почты (находится здесь: http://www.linuxjournal.com/article/9585?page=0,3) от php до javascript. Независимо от того, что «вы не должны проверять с помощью javascript, потому что javascript может быть отключен». Очевидно, я не могу оставить в функции checkdnsrr() функцию, но все остальное должно быть выполнимо с помощью javascript.Ошибка синтаксиса метода теста Javascript?

Пока функция работает не ожидается вплоть до этой линии: else if(/\.\./.test(domain)) {

Я знаю, что это довольно бесполезно без контекста, поэтому полная функция ниже. Что также странно, так это то, что он дает «проход» к строке с тем же шаблоном регулярного выражения: else if(/\.\./.test(local)) {, который используется несколькими строками перед ним. Странный.

function validEmail(email) { 
    var isValid = true; 
    var atIndex = email.indexOf("@"); 
    var ending = email.length - 1; 
    if(typeof(atIndex) == "boolean" && !atIndex) { 
     isValid = false; 
    } 
    else { 
     var domain = email.substr(atIndex+1); 
     var local = email.substr(0, atIndex); 
     var localLen = local.length; 
     var domainLen = domain.length; 
     if(localLen < 1 || localLen > 64) { 
      // local part length exceeded 
      isValid = false; 
     } 
     else if(domainLen < 1 || domainLen > 255) { 
      // domain part length exceeded 
      isValid = false; 
     } 
     else if(local[0] == '.' || local[localLen-1] == '.') { 
      // local part starts or ends with '.' 
      isValid = false; 
     } 
     else if(/\.\./.test(local)) { 
      // local part has two consecutive dots 
      isValid = false; 
     } 
     else if(/^[A-Za-z0-9\\-\\.]+$/.test(domain) == false) 
      // character not valid in domain part 
      isValid = false; 
     } 
     else if(/\.\./.test(domain)) { 
      // domain part has two consecutive dots 
      isValid = false; 
     } 
     else if(/^(\\\\.|[A-Za-z0-9!#%&`_=\/$'*+?^{}|~.-])+$/.test(local.replace("\\\\",""))) { 
      // character not valid in local part unless 
      // local part is quoted 
      if(/^"(\\\\"|[^"])+"$/.test(local.replace("\\\\",""))) { 
       isValid = false; 
      } 
     } 
    } 
    return isValid; 
} 
+1

В чем проблема? Какая ошибка? – thefourtheye

+0

'isValid =" false ";'? – SLaks

+0

Все это говорит о «SyntaxError: синтаксической ошибке» в консоли. – Amygdala

ответ

1

Вы пропустили { в предыдущем if.

Поэтому else не имеет подключенного к нему if.

+0

как, черт возьми, я пропустил это? лол – Amygdala

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