jQuery와 정규식을 사용하여 이메일 주소 확인


174

이 작업을 수행하는 방법을 잘 모르겠습니다. 정규식을 사용하여 다음과 같은 이메일 주소를 확인해야합니다.

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)

그런 다음 jQuery 함수에서 이것을 다음과 같이 실행해야합니다.

$j("#fld_emailaddress").live('change',function() { 
var emailaddress = $j("#fld_emailaddress").val();

// validation here? 

if(emailaddress){}

// end validation

$j.ajax({  
        type: "POST",  
         url: "../ff-admin/ff-register/ff-user-check.php",  
        data: "fld_emailaddress="+ emailaddress,  
        success: function(msg)
        { 
            if(msg == 'OK') { 
            $j("#fld_username").attr('disabled',false); 
            $j("#fld_password").attr('disabled',false); 
            $j("#cmd_register_submit").attr('disabled',false); 
            $j("#fld_emailaddress").removeClass('object_error'); // if necessary
            $j("#fld_emailaddress").addClass("object_ok");
            $j('#email_ac').html('&nbsp;<img src="img/cool.png" align="absmiddle"> <font color="Green"> Your email <strong>'+ emailaddress+'</strong> is OK.</font>  ');
            } else {  
            $j("#fld_username").attr('disabled',true); 
            $j("#fld_password").attr('disabled',true); 
            $j("#cmd_register_submit").attr('disabled',true);  
            $j("#fld_emailaddress").removeClass('object_ok'); // if necessary
            $j("#fld_emailaddress").addClass("object_error");
            $j('#email_ac').html(msg);
            }
        }
     });
});

검증은 어디로 가고 표현은 무엇입니까?


답변:


491

업데이트


function isValidEmailAddress(emailAddress) {
    var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
    return pattern.test(emailAddress);
}

if( !isValidEmailAddress( emailaddress ) ) { /* do stuff here */ }

2
고맙습니다 aSeptik 메일 주소에서 전자를 "누락"잘 작동 예 예 정규 표현식 100 %가 존재하지 않지만 "예쁜"가까이 얻을 수 있습니다
RussP

1
그것을 너무 깊이 검증하지는 않았지만 이미 asdf@adsf.com에 대해 잘못된 긍정을 주었다
gcb

@ gcb : 안녕하세요, 정규식이 귀하의 요구를 충족시키지 못하면 변경할 수 있습니다. 어쨌든 나는 그것을 테스트했으며 정상적으로 작동합니다. jsfiddle.net/ADPaM
Luca Filosofi

14
클라이언트 측의 정규 표현식만으로는 메일 서버가 있는지 도메인 자체가 있는지 알 수 없습니다. 전자 메일 구문이 유효한지 여부를 확인합니다. 사용자가 올바른 주소를 작성하는 데 도움이됩니다. 검증이 아닙니다.
BerggreenDK

완벽하게 작동합니다! 고마워 친구

28

이것은 내 솔루션입니다.

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i);
    // alert( pattern.test(emailAddress) );
    return pattern.test(emailAddress);
};

여기서 RegExp를 찾았습니다 : http://mdskinner.com/code/email-regex-and-validation-jquery


3
더하기 기호에 대한 요점은 유효하지만 정규 표현식이 내 예제에서 사용하는 것보다 덜 좋습니다. 추신 : 나는 더하기 기호를 지원하도록 정규식을 업데이트했습니다.
Luca Filosofi

대부분의 경우 사용자가 이메일을 올바른 형식으로 입력했는지 확인하려고합니다. "@"대신 "2"와 같은 오타를 식별합니다. 그래서 나는 원래의 대답보다 이것을 좋아하지만 aSeptik의 대답은 포괄적이며 그것을 찬성했습니다.
darwindeeds

test @ gmail..com 유용한 정보-잘못, 정규 표현식 변경
htngapi

14
$(document).ready(function() {

$('#emailid').focusout(function(){

                $('#emailid').filter(function(){
                   var emil=$('#emailid').val();
              var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
            if( !emailReg.test( emil ) ) {
                alert('Please enter valid email');
                } else {
                alert('Thank you for your valid email');
                }
                })
            });
});

8
실제로 이것은 도움이되었습니다. 제목은 JQuery를 말하며 이것은 괜찮은 jquery 예제가있는 유일한 대답입니다.
Taylor Mitchell

이것은 abc.b. @ yahoo.com의 유효성을 검사합니다
NoBullMan

7

Lolz 이것은 훨씬 낫다

    function isValidEmailAddress(emailAddress) {
        var pattern = new RegExp(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/);
        return pattern.test(emailAddress);
    };

모바일 웹 사이트를위한 솔루션을 선호합니다. 다른 하나는 내 스마트 폰을 녹일 것입니다.) +1
Hexodus

구문 문제 oin 자바 스크립트
Sajith

äüõ 등의 문자는 유효하지 않습니다 !!
DAH

5

Verimail.jsjQuery 플러그인 을 사용 하는 것이 좋습니다 .

왜?

  • IANA TLD 검증
  • 구문 유효성 검사 (RFC 822에 따름)
  • 가장 일반적인 TLD 및 이메일 도메인에 대한 맞춤법 제안
  • mailinator.com과 같은 임시 이메일 계정 도메인 거부

어떻게?

사이트에 verimail.jquery.js 를 포함 시키고 함수를 사용하십시오.

$("input#email-address").verimail({
    messageElement: "p#status-message"
});

양식이 있고 제출시 전자 메일의 유효성을 검사하려는 경우 getVerimailStatus-function을 사용할 수 있습니다.

if($("input#email-address").getVerimailStatus() < 0){
    // Invalid email
}else{
    // Valid email
}

1
Verimail은 키업을 계속해서 확인합니다. 즉, 입력을 시작하자마자 오류 메시지가 나타납니다. 일반적으로 훌륭한 플러그인이지만 거래 차단기입니다. 제출 버튼을 클릭하거나 필드를 떠나기 전에 수동으로 트리거 할 때만 유효성을 검사하는 것이 좋습니다.
Sebastian Schmid


0

정규식 (/^([\w.-]+)@([\w-]+)((.(\w){2,3})+)$/i)를 사용하여 이메일 주소를 확인할 수도 있습니다 형식이 올바른지 아닌지.

var emailRegex = new RegExp(/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/i);
 var valid = emailRegex.test(emailAddress);
  if (!valid) {
    alert("Invalid e-mail address");
    return false;
  } else
    return true;

0

이 시도

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
    return pattern.test(emailAddress);
};

0

이 기능을 사용할 수 있습니다

 var validateEmail = function (email) {

        var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;


        if (pattern.test(email)) {
            return true;
        }
        else {
            return false;
        }
    };

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.