2014-02-19 4 views
0

См. Javascript-код ниже. Блок else if, который выполняет проверку шаблона электронной почты, не разрешает никаких идентификаторов электронной почты. Что возвращает функция match()? Пожалуйста помоги.Javascript email regex matching

Б тест()

пустое поле: работа штрафа wron почтовый идентификатор: работает отлично Правильный электронный идентификатор: не работает

var pattern = new RegExp("/^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/"); 
    if(!accountantEmail){ 
     $("#infoTextMsg").hide(); 
     $("#accountantEmailNoDataErr").show(); 
     $("#accountantEmailInvalidFormat").hide(); 
     $("#accountant_email").focus(); 
     return false; 
    } 
    else if(!(pattern.test(accountantEmail))){ 
     $("#accountantEmailInvalidFormat").show(); 
     $("#infoTextMsg").hide(); 
     $("#accountantEmailNoDataErr").hide(); 
     $("#accountant_email").focus(); 
     return false; 
    } 
+1

Это может помочь: http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address – Bill

+1

Что именно вы хотите проверить? Что они ввели то, что похоже на адрес электронной почты, или что они действительно ввели рабочий адрес электронной почты, к которому у них есть доступ? Если это первый, используйте регулярное выражение. Если это последний, проверьте, что в нем есть символ '@', а затем отправляйте для них подтверждение по электронной почте, чтобы подтвердить, что оно действительно работает. –

+0

anthony, он показывает неверный идентификатор электронной почты, который меня охватывает, вводя действительный номер –

ответ

0

Использование регулярных выражений, вероятно, лучший способ. Вот пример (live demo):

function validateEmail(email) 
{ 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
     return re.test(email); 
} 

Но имейте в виду, что не следует полагаться только на проверки JavaScript. JavaScript можно легко отключить. Это также должно быть проверено на стороне сервера.

0

Javascript match возвращает массив, содержащий совпадения.

Вот регулярное выражение я использую:

var pattern = "[-0-9a-zA-Z.+_][email protected][-0-9a-zA-Z.+_]+\.[a-zA-Z]{2,4}"; 

if(!(accountantEmail.match(pattern))) { 
    return false; 
} 
0

Для validation сценариев, вы должны использовать функцию RegExp#test.

var pattern = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; 

if (!pattern.test(accountantEmail)) { 
    $("#accountantEmailInvalidFormat").show(); 
    $("#infoTextMsg").hide(); 
    $("#accountantEmailNoDataErr").hide(); 
    $("#accountant_email").focus(); 
    return false; 
} 

Как прокомментировал другие должности, функция match предназначена для группы захвата.

Также обратите внимание, что вы указываете свой pattern с помощью / в начале. Это необязательно, если вы указываете RegExp как строку.

+0

Я пробовал это, но когда я вводил идентификатор электронной почты, он возвращается из первого блока if и всегда дает мне сообщение «Пожалуйста, введите сообщение электронной почты», которое я в основном закодировал для проверки null –

+0

Попробуйте изменить первое условие 'if': 'if (! accountantEmail) {' – everton

+0

попробовал. не помогло –