jQuery를 사용한 이메일 검증


답변:


703

이를 위해 일반적인 오래된 자바 스크립트를 사용할 수 있습니다.

function isEmail(email) {
  var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return regex.test(email);
}

66
예, jQuery는 여전히 자바 스크립트임을 기억하십시오 :)
Fabian

36
이 정규 표현식은 대부분의 실제 주소가 유효한 것으로 간주하지만 여전히 많은 오탐과 오음이 있습니다. 예를 들어, Wikipedia 에서 유효하고 유효하지 않은 이메일 주소의 예를 참조하십시오 .
Arseny

1
@Umingo email@127.0.0.1은 여전히 ​​유효한 이메일이지만 더 나은 방식으로 작성 될 수 있습니다. 도메인의 어떤 부분도 [a-z0-9] 이외의 다른 문자로 시작할 수 없습니다 (대소 문자 구분). 또한 유효한 전자 메일 (및 도메인)에는 약간의 제한이 있으며 테스트되지 않았습니다.
tomis

10
새로운 최상위 도메인이 점점 일반화되면서이 정규식은 .systems 및 .poker 등을 수정해야 할 수 있지만 이제는 모든 유효한 TLD이지만 정규식 검사에 실패합니다
Liath

3
다른 답변에 테오의 코멘트 당, 당신은 변경해야 var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;하는 var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,6})+$/;등 새로운 TLD의 같은 .museum, 지원
아이라 허먼

164

이메일을 검증하는 jQuery 함수

특히 양식에 유효성 검사가 필요한 필드가 하나만있는 경우 플러그인을 사용하고 싶지 않습니다. 이 기능을 사용하여 전자 메일 양식 필드의 유효성을 검사해야 할 때마다 호출합니다.

 function validateEmail($email) {
  var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
  return emailReg.test( $email );
}

그리고 지금 이것을 사용

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

건배!


16
당신은 반환해야합니다emailReg.test($email);
nffdiogosilva

7
참고로 빈 이메일 주소에 대해서는 true를 반환합니다. 예 emailReg.text("") true. 나는 단순히 emailReg var의 선언에 따라 함수를 작성했다.return ( $email.length > 0 && emailReg.test($email))
Diziet

14
우리가 지금 .museum 추천 문자가 포함 된 도메인 이름 확장이 있기 때문에 변경할 것 그 때문에 EMAILADDRESS의 유효성을 확인하기위한 정규식, 오래된됩니다 var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,6})?$/;
테오

3
바로 당신은 @ h.coates입니다! jQuery에 실제로 전자 메일 유효성 검사가 내장되어 있음을 확인하기 위해이 스레드에 왔습니다. 함께 이동, 이들은 당신이 찾고있는 드로이드가 아닙니다 ...
iGanja

3
@Theo의 요점은 중요하지만 TLD의 실제 길이는 6 이상이어야하며 확장의 이론 상한은 63 자입니다. 현재 가장 긴 것은 20 이상입니다 data.iana.org/TLD/tlds-alpha-by-domain.txt
Jeroenv3

41

몇 가지 이유로 jQuery 유효성 검사 플러그인 을 사용합니다 .

당신은 확인, 좋아, 지금 무엇? 오류를 표시하고, 유효 할 때 지우기를 처리하고, 총 오류 수를 표시해야합니까? 휠을 다시 발명 할 필요가없는 많은 것들이 당신을 위해 처리 할 수 ​​있습니다.

또한, 또 다른 큰 이점은 그것이 CDN에 호스팅이며, 현재 버전 이 답변의 시간을 여기에서 찾을 수 있습니다 : http://www.asp.net/ajaxLibrary/CDNjQueryValidate16.ashx를 이 수단 빠른로드 시간을 클라이언트에 대한.


6
좋아 ... 휠을 재발 명 할 필요가 없습니다. 그러나 필드 유효성 검사를 위해 수십 KByte의 Javascript를 설치 해야하는 이유는 무엇입니까? 필요한 것은 새 바퀴라면 자동차 공장을 짓는 것과 같습니다. :)
kraftb

3
@ kraftb 내 대답에서 언급했듯이 텍스트 자체의 유효성을 검사하는 것이 아니라 유효성 검사를 처리하고 표시합니다.
Nick Craver

5
@NickCraver에게 감사드립니다. 이것은 실제로 전자 메일의 유효성 검사 문제에 대한 "모범 사례"접근 방식입니다. 이것은 바퀴를 얻기 위해 공장을 짓는 것 (모든 작업을하기 위해 라이브러리를 작성하는 것)과는 다릅니다. 자동차의 왜건 휠을 얻는 방법을 알아 내려고하는 대신 공장의 지시에 따라 현대 차량에 휠을 설치하십시오 (자동차를 타거나 휠을 넣습니다-러그 너트에 올려 놓기). 이 플러그인은 사용하기 매우 간단합니다. 폼 유효성 검사를 수행하려면 문자 그대로 포함, 일부 주석 및 단일 메서드 호출입니다.
jfgrissom

3
이제 '바퀴 재발견'은유를 재창조하고 있습니다!
Dom Vinyard 9

사람들을 위해 웹 양식 작업 앱 붙어 encosia.com/using-jquery-validation-with-asp-net-webforms을
Jerreck

38

에서 봐 HTTP : //bassistance.de/jquery-plugins/jquery-plugin-validation/ . 양식에 대한 강력한 유효성 검사 시스템을 구축 할 수있는 멋진 jQuery 플러그인입니다. 여기에 유용한 샘플이 있습니다 . 따라서 전자 메일 필드 유효성 검사 형식은 다음과 같습니다.

$("#myform").validate({
  rules: {
    field: {
      required: true,
      email: true
    }
  }
});

세부 사항 및 샘플 은 이메일 방법 문서 를 참조하십시오 .


1
마지막은 아직 살아있다)
Andrew Bashtannik

6
그러나 허용되는 형식은 x@x(이상한 것입니다) x@x.x어떻게 수정해야합니까?
Basheer AL-MOMANI

2
@ BasheerAL-MOMANI [ jqueryvalidation.org/jQuery.validator.methods/] $.validator.methods.email = function( value, element ) { return this.optional( element ) || //^.+@.+\..+$/.test( value ); }
Bill Gillingham

17
<script type="text/javascript">
    $(document).ready(function() {
      $('.form_error').hide();
      $('#submit').click(function(){
           var name = $('#name').val();
           var email = $('#email').val();
           var phone = $('#phone').val();
           var message = $('#message').val();
           if(name== ''){
              $('#name').next().show();
              return false;
            }
            if(email== ''){
               $('#email').next().show();
               return false;
            }
            if(IsEmail(email)==false){
                $('#invalid_email').show();
                return false;
            }

            if(phone== ''){
                $('#phone').next().show();
                return false;
            }
            if(message== ''){
                $('#message').next().show();
                return false;
            }
            //ajax call php page
            $.post("send.php", $("#contactform").serialize(),  function(response) {
            $('#contactform').fadeOut('slow',function(){
                $('#success').html(response);
                $('#success').fadeIn('slow');
               });
             });
             return false;
          });
      });
      function IsEmail(email) {
        var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if(!regex.test(email)) {
           return false;
        }else{
           return true;
        }
      }
  </script>

<form action="" method="post" id="contactform">
                            <table class="contact-table">
                              <tr>
                                <td><label for="name">Name :</label></td>
                                <td class="name"> <input name="name" id="name" type="text" placeholder="Please enter your name" class="contact-input"><span class="form_error">Please enter your name</span></td>
                              </tr>
                              <tr>
                                <td><label for="email">Email :</label></td>
                                <td class="email"><input name="email" id="email" type="text" placeholder="Please enter your email" class="contact-input"><span class="form_error">Please enter your email</span>
                                  <span class="form_error" id="invalid_email">This email is not valid</span></td>
                              </tr>
                              <tr>
                                <td><label for="phone">Phone :</label></td>
                                <td class="phone"><input name="phone" id="phone" type="text" placeholder="Please enter your phone" class="contact-input"><span class="form_error">Please enter your phone</span></td>
                              </tr>
                              <tr>
                                <td><label for="message">Message :</label></td>
                                <td class="message"><textarea name="message" id="message" class="contact-input"></textarea><span class="form_error">Please enter your message</span></td>
                              </tr>
                              <tr>
                                <td></td>
                                <td>
                                  <input type="submit" class="contactform-buttons" id="submit"value="Send" />
                                  <input type="reset" class="contactform-buttons" id="" value="Clear" />
                                </td>
                              </tr>
                            </table>
     </form>
     <div id="success" style="color:red;"></div>

15

<!-- Dont forget to include the jQuery library here -->
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">

$(document).ready(function() {

    $("#validate").keyup(function(){

        var email = $("#validate").val();

        if(email != 0)
        {
            if(isValidEmailAddress(email))
            {
                $("#validEmail").css({
                    "background-image": "url('validYes.png')"
                });
            } else {
                $("#validEmail").css({
                    "background-image": "url('validNo.png')"
                });
            }
        } else {
            $("#validEmail").css({
                "background-image": "none"
            });         
        }

    });

});

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
}

</script>

<style>
    #validEmail
    {
        margin-top: 4px;
        margin-left: 9px;
        position: absolute;
        width: 16px;
        height: 16px;
    }

    .text
    {
        font-family: Arial, Tahoma, Helvetica;
    }
</style>

    <title>Live Email Validation with jQuery Demo</title>
</head>
<body>
    <div class="text"><h1>Reynoldsftw.com - Live Email Validation</h1><h2>Type in an email address in the box below:</h2></div>
    <div><input type="text" id="validate" width="30"><span id="validEmail"></span></div>
    <div class="text"><P>More script and css style

: www.htmldrive.net


출처 : htmldrive.com


14

Verimail.js를 추천 하고 JQuery 플러그인도있다 .

왜? Verimail은 다음을 지원합니다.

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

따라서 Verimail.js는 유효성 검사 외에도 제안 사항을 제공합니다. 따라서 일반적인 전자 메일 도메인 (hotmail.com, gmail.com 등)과 매우 유사한 잘못된 TLD 또는 도메인이있는 전자 메일을 입력하면이를 감지하여 수정을 제안 할 수 있습니다.

예 :

  • test@gnail.con-> test @ gmail.com 을 의미 했습니까 ?
  • test@hey.nwt-> test @ hey를 의미 했습니까? 그물 ?
  • test@hottmail.com-> test @ hotmail.com 을 의미 했습니까 ?

등등..

jQuery와 함께 사용하려면 사이트에 verimail.jquery.js 를 포함 시키고 아래 함수를 실행하십시오.

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

메시지 요소는 메시지가 표시 될 요소입니다. 이것은 "이메일이 유효하지 않습니다"에서 "의미 되었습니까?"까지 모든 것이 될 수 있습니다.

양식이 있고 이메일이 유효하지 않으면 제출할 수 없도록 제한하려는 경우 아래에 표시된대로 getVerimailStatus-function을 사용하여 상태를 확인할 수 있습니다.

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

이 함수는 Comfirm.AlphaMail.Verimail.Status 객체에 따라 정수 상태 코드를 반환합니다. 그러나 일반적으로 0 미만의 코드는 오류를 나타내는 코드입니다.


.getVerimailStatus()숫자 상태 코드, 단지 문자열의 값을 반환하지 않습니다 success, error가능성 또는 pending(마지막 하나를 확인하지 않았다).
Niko Nyman

14

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 (email is invalid) */ }

이것은 사용자가 제공 한 루카 Filosofi 이 대답 이 답변


ASP.NET MVC Razor 페이지에서 이것을 사용하는 경우 @다른 @문자로 문자 를 이스케이프 처리하는 것을 잊지 마십시오 . 따라서 @@그렇지 않으면 빌드 오류가 발생합니다.
Rosdi Kasim 2016

11

매우 간단한 해결책은 html5 유효성 검사를 사용하는 것입니다.

<form>
  <input type="email" required pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}">

  <input type="submit">
</form>

http://jsfiddle.net/du676/56/


10

이는보다 철저한 유효성 검사를 수행합니다 (예 : john..doe @ example.com과 같은 사용자 이름의 연속적인 점을 검사 함)

function isValidEmail(email)
{
    return /^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(email)
        && /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(email);
}

JavaScript에서 정규식을 사용하여 이메일 주소 확인을 참조하십시오 .


1
그러나 연속적인 점은 실제로 유효하지 않습니까? 반대로 나는 당신이 그렇게함으로써 유효한 이메일 주소를 제외하고 있다고 생각합니다.
icktoofay

9

다른 사람들이 언급했듯이 정규식을 사용하여 전자 메일 주소가 패턴과 일치하는지 확인할 수 있습니다. 그러나 패턴과 일치하는 전자 메일을 계속 가질 수 있지만 여전히 스팸 전자 메일이거나 반송됩니다.

정규식으로 확인

var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);

실제 이메일 유효성 검사 API로 확인

이메일 주소가 실제이고 현재 활성화되어 있는지 확인하는 API를 사용할 수 있습니다.

var emailAddress = "foo@bar.com"
response = $.get("https://isitarealemail.com/api/email/validate?email=" +
    emailAddress,
    function responseHandler(data) {
        if (data.status === 'valid') {
            // the email is valid and the mail box is active
        } else {
            // the email is incorrect or unable to be tested.
        }
    })

자세한 내용은 https://isitarealemail.com 또는 블로그 게시물을 참조 하십시오


8

기본 양식이 있다면 입력 유형의 이메일을 만드십시오. <input type="email" required>

이것은 HTML5 속성을 사용하는 브라우저에서 작동하며 JS가 필요하지 않습니다. 위의 스크립트 중 일부와 함께 이메일 유효성 검사를 사용하는 것만으로는 그다지 중요하지 않습니다.

some@email.com so@em.co my@fakemail.net

등 ... 모두 "실제"이메일로 확인됩니다. 따라서 동일한 주소를 입력하기 위해 사용자가 자신의 전자 메일 주소를 두 번 입력해야하는 것이 더 나을 것입니다. 그러나 전자 메일 주소가 실제임을 확인하는 것은 매우 어렵지만 방법. 그러나 이메일인지 확인하려면 HTML5 입력을 사용하십시오.

피들 예제

FireFox 및 Chrome에서 작동합니다. 인터넷 익스플로러에서는 작동하지 않을 수 있습니다 ... 그러나 인터넷 익스플로러는 짜증납니다. 그럼 ...


regexp 메소드는 일반적으로 a @ bc (링크 된 JSFiddle 예제에서 최신 Chrome을 사용할 수 있음)와 같은 명백한 이메일을 방지하므로 HTML5 솔루션은 분명히 부적절한 솔루션입니다.
SnowInferno

멋있는. HTML5와 같은 패턴 일치를 사용하는 것이 "추정 된"방법은 어떻습니까? 크롬 북에서 시도해 보지 않겠습니까 : jsfiddle.net/du676/8
weathers

8

MVC / ASP.NET의 자바 스크립트 이메일 유효성 검사

Fabian의 답변을 사용하면서 내가 겪은 문제는 면도기 @기호로 인해 MVC보기로 구현하는 것입니다 . @이스케이프 하려면 추가 기호 를 포함시켜야합니다 .@@

MVC에서 면도기를 피하려면

function isEmail(email) {
  var regex = /^([a-zA-Z0-9_.+-])+\@@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return regex.test(email);
}

이 페이지의 다른 곳에서는 볼 수 없었으므로 도움이 될 것이라고 생각했습니다.

편집하다

다음은 사용법을 설명하는 Microsoft 의 링크 입니다.
방금 위의 코드를 테스트하고 다음 js를 얻었습니다.

function validateEmail(email) {
  var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
  return regex.test(email);
}

정확히해야 할 일을하는 것입니다.


@nbrogi 이것이 작동하지 않는다는 것은 무엇을 의미합니까? 방금 이것을 다시 확인하면 다음과 같은 js가 생성 var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 됩니다. 코드에 무슨 일이 있습니까?
Trevor Nestman

죄송합니다. 현재 확실하지 않습니다. 완전히 변경했습니다.
nkkollaw

할 수 있으면 알려주세요. 이것이 나쁜 정보라면, 내가 그것을 아래로 내릴 것입니다. 가능한 경우 유용한 정보를 제공하려고 시도하고 MVC보기에서 정규식을 작성할 때 도움이되었습니다.
Trevor Nestman

다시 한 번, 이것이 왜 다운 보트인지 알고 싶습니다. 그것은 내가 원하는 것을 정확하게 수행합니다 . @의 정규 표현식에서 기호를 생성합니다 .cshtml. 일반적으로 @심볼 뒤의 모든 것을 면도기 코드로 취급하려고 하지만 이중 @@은 그것을 방지합니다.
Trevor Nestman

내가 볼 주요 문제는 정규식라는 변수 정규식으로 설정되어 두 번째 코드 블록에 있지만 두 번째 줄은 변수의 이름을 다시 사용
phlare

7
function isValidEmail(emailText) {
    var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\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]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([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(emailText);
};

이렇게 사용 :

if( !isValidEmail(myEmail) ) { /* do things if myEmail is valid. */ }

6
function validateEmail(emailaddress){  
   var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;  
   if(!emailReg.test(emailaddress)) {  
        alert("Please enter valid email id");
   }       
}

5
<script type = "text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type = "text/javascript">
    function ValidateEmail(email) {
        var expr = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
        return expr.test(email);
    };
    $("#btnValidate").live("click", function () {
        if (!ValidateEmail($("#txtEmail").val())) {
            alert("Invalid email address.");
        }
        else {
            alert("Valid email address.");
        }
    });
</script>
<input type = "text" id = "txtEmail" />
<input type = "button" id = "btnValidate" value = "Validate" />

4

여기에 착륙했습니다 .... 여기에 도착했습니다 : https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address

... 다음 정규식을 제공했습니다.

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

... jQuery Validation 플러그인 readme에 대한 메모 덕분에 발견되었습니다 : https://github.com/jzaefferer/jquery-validation/blob/master/README.md#reporting-an-issue

따라서 @Fabian답변 의 업데이트 버전 은 다음과 같습니다.

function IsEmail(email) {
  var regex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
  return regex.test(email);
}

희망이 도움이


이 사람은 나에게 가장 좋은 대답했다 - 그것은 true를 반환 john..doe@example.com하지만 거짓이었던 것으로 그 싶습니다
아담 기사

3

이것을 사용하십시오

if ($this.hasClass('tb-email')) {
    var email = $this.val();
    var txt = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (!txt.test(email)) {
        e.preventDefault();
        $this.addClass('error');
    } else {
        $this.removeClass('error');
    }
}

3

버그는 Jquery Validation Validation Plugin에 있습니다. 변경하려면 @로만 유효성을 검사하십시오.

코드를 이것으로 변경하십시오

email: function( value, element ) {
    // From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29
    // Retrieved 2014-01-14
    // If you have a problem with this implementation, report a bug against the above spec
    // Or use custom methods to implement your own email validation
    return this.optional( element ) || /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test( value );
}

3

일년 내내 중단적인 RegEx 경기보다 더 나은 유지 관리 솔루션 을 사용하려는 사람들을 위해 몇 줄의 코드를 작성했습니다. 바이트를 저장하려는 사람은 RegEx 변형을 고수하십시오. :)

이것은 다음을 제한합니다.

  • 문자열에 @가 없습니다
  • 문자열에 점이 없음
  • @ 다음에 2 점 이상
  • 사용자 이름에 잘못된 문자 (@ 이전)
  • 문자열에서 2 @ 이상
  • 도메인의 잘못된 문자
  • 하위 도메인의 잘못된 문자
  • TLD의 나쁜 문자
  • TLD-주소

어쨌든 여전히 유출이 가능하므로 서버 측 유효성 검사 + 전자 메일 링크 확인과 결합해야합니다.

여기 JSFiddle이 있습니다

 //validate email

var emailInput = $("#email").val(),
    emailParts = emailInput.split('@'),
    text = 'Enter a valid e-mail address!';

//at least one @, catches error
if (emailParts[1] == null || emailParts[1] == "" || emailParts[1] == undefined) { 

    yourErrorFunc(text);

} else {

    //split domain, subdomain and tld if existent
    var emailDomainParts = emailParts[1].split('.');

    //at least one . (dot), catches error
    if (emailDomainParts[1] == null || emailDomainParts[1] == "" || emailDomainParts[1] == undefined) { 

        yourErrorFunc(text); 

     } else {

        //more than 2 . (dots) in emailParts[1]
        if (!emailDomainParts[3] == null || !emailDomainParts[3] == "" || !emailDomainParts[3] == undefined) { 

            yourErrorFunc(text); 

        } else {

            //email user
            if (/[^a-z0-9!#$%&'*+-/=?^_`{|}~]/i.test(emailParts[0])) {

               yourErrorFunc(text);

            } else {

                //double @
                if (!emailParts[2] == null || !emailParts[2] == "" || !emailParts[2] == undefined) { 

                        yourErrorFunc(text); 

                } else {

                     //domain
                     if (/[^a-z0-9-]/i.test(emailDomainParts[0])) {

                         yourErrorFunc(text); 

                     } else {

                         //check for subdomain
                         if (emailDomainParts[2] == null || emailDomainParts[2] == "" || emailDomainParts[2] == undefined) { 

                             //TLD
                             if (/[^a-z]/i.test(emailDomainParts[1])) {

                                 yourErrorFunc(text);

                              } else {

                                 yourPassedFunc(); 

                              }

                        } else {

                             //subdomain
                             if (/[^a-z0-9-]/i.test(emailDomainParts[1])) {

                                 yourErrorFunc(text); 

                             } else {

                                  //TLD
                                  if (/[^a-z]/i.test(emailDomainParts[2])) {

                                      yourErrorFunc(text); 

                                  } else {

                                      yourPassedFunc();
}}}}}}}}}

3

jQuery Validation을 사용 하고 단일 HTML 행에서 이메일과 이메일 유효성 검증 메시지를 검증 할 수 있습니다.type="email" required data-msg-email="Enter a valid email account!"

당신이 사용할 수있는 데이터 MSG-이메일 "유효한 이메일 주소를 입력하십시오."개인의 메시지를 배치하는 데 매개 변수를하거나이 매개 변수를 배치하지 않고 기본 메시지가 표시됩니다

전체 예 :

<form class="cmxform" id="commentForm" method="get" action="">
  <fieldset>
    <p>
      <label for="cemail">E-Mail (required)</label>
      <input id="cemail" type="email" name="email" required data-msg-email="Enter a valid email account!">
    </p>
    <p>
      <input class="submit" type="submit" value="Submit">
    </p>
  </fieldset>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.17.0/dist/jquery.validate.js"></script>
<script>
$("#commentForm").validate();
</script>

2
if($("input#email-address").getVerimailStatus() < 0) { 

(incorrect code)

}

if($("input#email-address").getVerimailStatus() == 'error') { 

(right code)

}

9
예를 들어 getVerimailStatus가 추가 플러그인이라고 언급해야합니다.
Dave Hogan

2
checkRegexp( email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\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]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([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, "eg. ui@jquery.com" );

참조 : JQUERY UI 웹 사이트



2

또 다른 간단하고 완전한 옵션 :

<input type="text" id="Email"/>
<div id="ClasSpan"></div>   
<input id="ValidMail" type="submit"  value="Valid"/>  


function IsEmail(email) {
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);
}

$("#ValidMail").click(function () {
    $('span', '#ClasSpan').empty().remove();
    if (IsEmail($("#Email").val())) {
        //aqui mi sentencia        
    }
    else {
        $('#ClasSpan').append('<span>Please enter a valid email</span>');
        $('#Email').keypress(function () {
            $('span', '#itemspan').empty().remove();
        });
    }
});

3
Stack Overflow는 영어로 된 사이트입니다. 다른 언어로 콘텐츠를 게시하지 마십시오.
Anders

2

당신은 당신의 자신의 기능을 만들 수 있습니다

function emailValidate(email){
    var check = "" + email;
    if((check.search('@')>=0)&&(check.search(/\./)>=0))
        if(check.search('@')<check.split('@')[1].search(/\./)+check.search('@')) return true;
        else return false;
    else return false;
}

alert(emailValidate('your.email@yahoo.com'));

1

방금 만든 간단한 것, 내가 필요한 것을 수행합니다. 영숫자, 마침표, 밑줄 및 @로만 제한하십시오.

<input onKeyUp="testEmailChars(this);"><span id="a"></span>
function testEmailChars(el){
    var email = $(el).val();
    if ( /^[a-zA-Z0-9_@.-]+$/.test(email)==true ){
        $("#a").html("valid");
    } else {
        $("#a").html("not valid");
    }
}

다른 사람들의 도움으로 만든


1

이 정규 표현식은 abc@abc.com.com.com.com과 같은 중복 도메인 이름을 방지하며 abc@abc.co.in과 같은 도메인은 두 번만 허용합니다. 또한 123abc@abc.com과 같은 숫자의 스레 팅을 허용하지 않습니다.

 regexp: /^([a-zA-Z])+([a-zA-Z0-9_.+-])+\@(([a-zA-Z])+\.+?(com|co|in|org|net|edu|info|gov|vekomy))\.?(com|co|in|org|net|edu|info|gov)?$/, 

모든 최고 !!!!!


1

버튼 상태 처리를 사용하여 입력하는 동안 이메일을 확인하십시오.

$("#email").on("input", function(){
    var email = $("#email").val();
    var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (!filter.test(email)) {
      $(".invalid-email:empty").append("Invalid Email Address");
      $("#submit").attr("disabled", true);
    } else {
      $("#submit").attr("disabled", false);
      $(".invalid-email").empty();
    }
  });

1

jquery 유효성 검사를 사용하는 경우

내 custm 형식에 emailCustomFormat사용되는 방법 을 만들었으며 regex요구 사항에 맞게 변경할 수 있습니다

jQuery.validator.addMethod("emailCustomFormat", function (value, element) {
        return this.optional(element) || /^([\w-\.]+@@([\w-]+\.)+[\w-]{2,4})?$/.test(value);
    }, abp.localization.localize("FormValidationMessageEmail"));// localized message based on current language

다음과 같이 사용할 수 있습니다

$("#myform").validate({
  rules: {
    field: {
      required: true,
      emailCustomFormat : true
    }
  }
});

이 정규식은 받아들입니다

abc@abc.abc, abc@abc.abcd 하지만이

abc@abc, abc@abc.a,abc@abc.abcde

이것이 당신을 도울 수 있기를 바랍니다

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