2014-01-27 4 views
0

Я хочу разрешить _ внутри письма.javascript email regexp issue

, но regexp у меня есть фильтр.

HTML,

<input id="external_email_input" maxlength="85" type="text"> 
    <button id='email'>Send</button> 

JS,

$("#email").click(function(){ 
     var email = $("#external_email_input").val(); 
     if(!validateEmail(email)){ 
      alert("wrong format!!"); 
     }else{ 
      alert("correct!!"); 
     } 
    });  




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); 
} 

jsfiddle,

http://jsfiddle.net/rRnwb/1/

если я поставил [email protected]_test.com

это возвращение s false

Как я могу разрешить _ как условие здесь?

+0

Просто поместите его в требуемом классе символов. И проверка электронной почты по регулярному выражению не всегда является хорошей идеей. – Jerry

ответ

3

Использование <input type="email" />. Удалите все JavaScript. Задача решена.

+0

хорошо .... я должен поддерживать IE8 :( – Canna

+0

'' работает в IE8. Он просто не будет проверять. Но это нормально, потому что проверка должна быть серверной. –

0

Редактирование валидации для включения подчеркивания (_), как было предложено Джерри в комментариях, решает проблему.

функция проверки:

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); 
} 

Обновлено скрипку: http://jsfiddle.net/rRnwb/2/

0

Ваш код был:

enter image description here

Там нет _, чтобы удовлетворить свой входной почтовый идентификатор после @ символа.

Таким образом, вы можете использовать:

(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|((\w+\.)+[a-zA-Z]{2,})) 

FIDDLE DEMO

Объяснение: enter image description here