it-swarm.com.de

E-Mail-Validierung mit jQuery

Ich bin neu bei jQuery und habe mich gefragt, wie man damit E-Mail-Adressen überprüfen kann.

316
DuH

Sie können normales altes Javascript dafür verwenden:

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

jQuery-Funktion zum Überprüfen von E-Mails

Ich mag es wirklich nicht, Plugins zu verwenden, besonders wenn mein Formular nur ein Feld enthält, das validiert werden muss. Ich benutze diese Funktion und rufe sie immer dann an, wenn ich ein E-Mail-Formularfeld validieren muss.

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

und jetzt das zu benutzen 

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

Prost!

152

Ich würde das jQuery-Validierungs-Plugin aus einigen Gründen verwenden.

Sie haben bestätigt, ok, nun was? Sie müssen den Fehler anzeigen, ihn löschen, wenn er gültig ist, und wie viele Fehler insgesamt angezeigt werden? Es gibt viele Dinge, mit denen Sie umgehen können, ohne dass Sie das Rad neu erfinden müssen.

Ein weiterer großer Vorteil ist, dass es auf einem CDN gehostet wird. Die aktuelle Version zum Zeitpunkt dieser Antwort ist hier zu finden: http://www.asp.net/ajaxLibrary/CDNjQueryValidate16.ashx bedeutet schnellere Ladezeiten für den Client.

39
Nick Craver

Siehe http: //bassistance.de/jquery-plugins/jquery-plugin-validation/ . Es ist das Nice jQuery-Plugin, das die Erstellung eines leistungsfähigen Validierungssystems für Formulare erlaubt. Es gibt einige nützliche Beispiele hier. Die E-Mail-Feldprüfung im Formular sieht also so aus: 

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

Siehe Dokumentation zur E-Mail-Methode für Details und Beispiele.

31

 

<!-- 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


Quelle: htmldrive.com

14
SwatiKothari

Ich würde Verimail.js empfehlen, es hat auch ein JQuery Plugin .

Warum? Verimail unterstützt Folgendes:

  • Syntaxvalidierung (gemäß RFC 822)
  • IANA-TLD-Validierung
  • Tipp für die Schreibweise der am häufigsten verwendeten TLDs und E-Mail-Domänen
  • Verweigern Sie temporäre E-Mail-Kontendomänen wie mailinator.com

Neben der Validierung gibt Ihnen Verimail.js auch Vorschläge. Wenn Sie also eine E-Mail mit der falschen TLD oder Domäne eingeben, die einer üblichen E-Mail-Domäne (hotmail.com, gmail.com usw.) sehr ähnlich ist, kann dies dies erkennen und eine Korrektur vorschlagen.

Beispiele:

Und so weiter..

Um es mit jQuery zu verwenden, schließen Sie einfach verimail.jquery.js in Ihre Site ein und führen Sie die folgende Funktion aus:

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

Das Nachrichtenelement ist ein Element, in dem eine Nachricht angezeigt wird. Dies kann alles sein von "Ihre E-Mail ist ungültig" bis zu "Meinten Sie ...?". 

Wenn Sie ein Formular haben und es einschränken möchten, dass es nicht gesendet werden kann, wenn die E-Mail nicht gültig ist, können Sie den Status mithilfe der getVerimailStatus-Funktion wie folgt überprüfen:

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

Diese Funktion gibt einen Integer-Statuscode gemäß dem Objekt Comfirm.AlphaMail.Verimail.Status zurück. Die Faustregel lautet jedoch, dass Codes unter 0 Codes sind, die Fehler anzeigen.

13
Robin Orheden

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) */ }

dies wurde vom Benutzer Luca Filosofi in dieser Antwort dieser Antwort bereitgestellt

13
Amila kumara
<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>
13
user1993920

Eine sehr einfache Lösung ist die HTML5-Validierung:

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

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

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

9
iamse7en

Dies führt eine gründlichere Validierung durch, beispielsweise wird nach aufeinanderfolgenden Punkten im Benutzernamen wie john..doe @ example.com geprüft 

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

Siehe E-Mail-Adresse mit regulärem Ausdruck in JavaScript überprüfen .

8
Geek

Wenn Sie ein Basisformular haben, geben Sie einfach den Eingabetyp für die E-Mail ein: <input type="email" required>

Dies funktioniert für Browser, die HTML5-Attribute verwenden, und Sie benötigen nicht einmal JS. Die Verwendung der E-Mail-Validierung selbst bei einigen der oben genannten Skripts wird nicht viel bewirken, da:

[email protected] [email protected] [email protected]

etc ... Werden alle als "echte" E-Mails bestätigt. Sie sollten also besser sicherstellen, dass der Benutzer seine E-Mail-Adresse zweimal eingeben muss, um sicherzustellen, dass er dieselbe E-Mail-Adresse einfügt. Wenn Sie jedoch sicherstellen möchten, dass die E-Mail-Adresse echt ist, wäre es sehr schwierig, aber es wäre sehr interessant zu sehen, ob es eine E-Mail gab Weg. Wenn Sie jedoch nur sicherstellen, dass es sich um eine E-Mail handelt, halten Sie sich an die HTML5-Eingabe.

FIDDLE BEISPIEL

Dies funktioniert in Firefox und Chrome. Es funktioniert möglicherweise nicht in Internet Explorer ... Aber Internet Explorer ist scheiße. Also dann gibt es das ...

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

Verwenden Sie wie folgt:

if( !isValidEmail(myEmail) ) { /* do things if myEmail is valid. */ }
6
JayKandari
function validateEmail(emailaddress){  
   var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/;  
   if(!emailReg.test(emailaddress)) {  
        alert("Please enter valid email id");
   }       
}
5
JAB
<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
Pritam

Javascript Email Validation in MVC/ASP.NET

Das Problem, auf das ich bei der Anwendung von Fabian gestoßen bin, ist das Implementieren in einer MVC-Ansicht aufgrund des Razor @-Symbols. Sie müssen ein zusätzliches @-Symbol hinzufügen, um es zu umgehen, wie folgt: @@

Rasiermesser in MVC zu vermeiden

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

Ich habe es an anderer Stelle auf dieser Seite nicht gesehen, deshalb dachte ich, es könnte hilfreich sein.

BEARBEITEN

Hier ist ein Link von Microsoft, der die Verwendung beschreibt. 
Ich habe gerade den obigen Code getestet und folgende Js erhalten:

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

Was genau das tut, was es tun soll.

4
Trevor Nestman

Hier gelandet ..... landete hier: https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address

... die folgende Regex lieferte:

/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-][email protected][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])?)*$/

... die ich dank eines Hinweises in der Readme-Datei zum jQuery Validation Plugin gefunden habe: https://github.com/jzaefferer/jquery-validation/blob/master/README.md#reporting-an-issue

Die aktualisierte Version von @Fabian s Antwort wäre also:

function IsEmail(email) {
  var regex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-][email protected][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);
}

Hoffentlich hilft das

4
timborden

Für diejenigen, die eine bessere wartbareLösung als störende Regy-Übereinstimmungen verwenden möchten, die über ein Jahr andauern, habe ich ein paar Zeilen Code geschrieben. Diejenigen, die Bytes speichern wollen, bleiben bei der RegEx-Variante :)

Das schränkt ein:

  • Nein @ in String
  • Kein Punkt in der Zeichenfolge
  • Mehr als 2 Punkte nach @
  • Ungültige Zeichen im Benutzernamen (vor @)
  • Mehr als 2 @ in string
  • Schlechte Zeichen in der Domäne
  • Schlechte Zeichen in der Subdomain
  • Schlechte Zeichen in der TLD
  • TLD - Adressen

Trotzdem ist es immer noch möglich, durchzudringen, also kombinieren Sie dies mit einer serverseitigen Validierung + E-Mail-Link-Überprüfung.

Hier ist dasJSFiddle

 //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
SEsterbauer

benutze das 

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
Ankit Agrawal

Fehler in Jquery Validation Validation Plugin Validiert nur mit @, um dies zu ändern 

Ändern Sie den Code zu diesem 

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

sie sollten Folgendes sehen: jquery.validate.js , fügen Sie es Ihrem Projekt hinzu

verwenden Sie es wie folgt:

<input id='email' name='email' class='required email'/>
2
Chuanshi Liu
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. [email protected]" );

Referenz: JQUERY UI WEBSITE

2
danielad

Eine weitere einfache und vollständige Option:

<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();
        });
    }
});
2
jorcado

Validieren Sie die E-Mail-Adresse während der Eingabe mit der Statusanzeige der Tasten. 

$("#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

Eine vereinfachte Version, die ich gerade gemacht habe, macht das, was ich brauche, um es zu geben ..

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

Mit Hilfe von anderen gemacht

1
nathan

Sie können Ihre eigene Funktion erstellen 

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('[email protected]'));
1
Wahid Masud

Diese Option verhindert, dass doppelte Domänennamen wie [email protected] vorhanden sind. Dies lässt nur zwei Domänen wie [email protected] zu. Es erlaubt auch keine Angabe von Nummern wie [email protected] 

 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)?$/, 

Alles Gute !!!!!

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

(incorrect code)

}

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

(right code)

}
1
Lorenzo

Sie können jQuery Validation verwenden und in einer einzigen HTML-Zeile können Sie die E-Mail und die E-Mail-Validierungsnachricht überprüfen: type="email" required data-msg-email="Enter a valid email account!"

Sie können den Parameter data-msg-email verwenden, um eine personalisierte Nachricht zu platzieren. Andernfalls setzen Sie diesen Parameter nicht ein. Die Standardnachricht wird angezeigt: "Geben Sie eine gültige E-Mail-Adresse ein."

Vollständiges Beispiel:

<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/[email protected]/dist/jquery.validate.js"></script>
<script>
$("#commentForm").validate();
</script>
1
J.C. Gras

Diese Frage ist schwieriger zu beantworten, als es auf den ersten Blick scheint. Wenn Sie mit E-Mails korrekt umgehen möchten.

Es gab eine Menge Leute auf der ganzen Welt, die nach dem Regex suchten, um sie alle zu beherrschen, aber die Wahrheit ist, dass es Töne von E-Mail-Providern gibt.

Was ist das Problem? Nun, "a_z%@gmail.com kann nicht existieren, aber es gibt möglicherweise eine solche Adresse über einen anderen Anbieter" [email protected]

Warum? Gemäß RFC: https://en.wikipedia.org/wiki/Email_Adresse#RFC_spezifikation .

Ich nehme einen Auszug, um die Vorlesung zu erleichtern:

The local-part of the email address may use any of these ASCII characters:

- uppercase and lowercase Latin letters A to Z and a to z;
- digits 0 to 9;
- special characters !#$%&'*+-/=?^_`{|}~;
- dot ., provided that it is not the first or last character unless quoted, and provided also that it does not appear consecutively unless quoted (e.g. [email protected] is not allowed but "John..Doe"@example.com is allowed);[6]
Note that some mail servers wildcard local parts, typically the characters following a plus and less often the characters following a minus, so [email protected] and [email protected] might end up in the same inbox as [email protected] or even as [email protected] This can be useful for tagging emails for sorting, see below, and for spam control. Braces { and } are also used in that fashion, although less often.
- space and "(),:;<>@[\] characters are allowed with restrictions (they are only allowed inside a quoted string, as described in the paragraph below, and in addition, a backslash or double-quote must be preceded by a backslash);
- comments are allowed with parentheses at either end of the local-part; e.g. john.smith(comment)@example.com and (comment)[email protected] are both equivalent to [email protected]

Ich kann also eine solche E-Mail-Adresse besitzen:

A__z/J0hn.sm{it!}[email protected]

Wenn Sie diese Adresse probieren, wette ich, dass sie im gesamten oder im größten Teil des regex, der im gesamten Netz gepostet wird, versagt. Denken Sie jedoch daran, dass diese Adresse den RFC-Regeln entspricht, damit sie gültig ist.

Stellen Sie sich meine Frustration vor, dass ich mich nirgends registrieren kann, wenn ich mich mit diesen Regex befasse !!

Der einzige, der eine E-Mail-Adresse wirklich überprüfen kann, ist der Anbieter der E-Mail-Adresse.

Wie geht man damit um?

Es ist egal, ob ein Benutzer in fast allen Fällen eine ungültige E-Mail hinzufügt. Sie können sich auf HTML 5-Eingabetyp = "E-Mail" verlassen, bei dem in der Nähe von nach RFC ausgeführt wird, und es besteht wenig Chance, dass Fehler auftreten HTML5-Eingabetyp = "E-Mail" info: https: //www.w3. org/TR/2012/WD-html-markup-20121011/input.email.html

Dies ist beispielsweise eine gültige RFC-E-Mail:

"very.(),:;<>[]\".VERY.\"[email protected]\\ \"very\".unusual"@strange.example.com

Die html5-Validierung sagt Ihnen jedoch, dass der Text vor @ keine "oder () - Zeichen enthalten darf, was eigentlich falsch ist.

Auf jeden Fall sollten Sie dies tun, indem Sie die E-Mail-Adresse akzeptieren und eine E-Mail-Nachricht an diese E-Mail-Adresse senden. Der Code und der Link müssen vom Benutzer aufgerufen werden, um die Gültigkeit zu bestätigen.

Eine gute Vorgehensweise ist dabei die Eingabe "Geben Sie Ihre E-Mail erneut ein", um Tippfehler zu vermeiden. Wenn dies für Sie nicht ausreicht, fügen Sie ein Pre-Submodal-Fenster mit dem Titel "Ist dies Ihre aktuelle E-Mail-Adresse?" Ein, und die E-Mail, die der Benutzer innerhalb eines h2-Tags eingibt, wissen Sie eindeutig -Mail sie eingegeben haben, dann eine "Ja, Senden" -Schaltfläche.

0
JoelBonetR
$.validator.addMethod("mymail", function(value, element) {
        return this.optional( element ) || /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test( value );
}, "Enter valid email!");

This may help! small modification to the answer "user4974898"!
0
SagitSri

Ich nehme diesen Code von jqvalidate Version 1.11.0 und implementiere in der Version 1.16.0 als zusätzliche Methode. Es klappt

            jQuery.validator.addMethod("strictemail", function(value, element) {
                    var valid = /^((([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.test(value);
                    return valid;
                }, "Escribe un correo v\u00e1lido"
            );

Und und in der E-Mail-Regel

            'correo': {
                required: 'Por favor ingresa tu correo',
                email: 'Escribe un correo v\u00e1lido',
                strictemail:'Escribe un correo v\u00e1lido'
            }
0
roll

wenn Sie jquery validation verwenden

Ich habe eine Methode emailCustomFormat erstellt, die regex für mein custm-Format verwendet. Sie können sie entsprechend Ihren Anforderungen ändern 

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

dann kannst du es so benutzen

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

diese Regex akzeptieren

[email protected], [email protected] aber dies nicht 

[email protected], [email protected], [email protected]

hoffe das hilft dir

0

Wie bereits erwähnt, können Sie mithilfe eines regulären Ausdrucks überprüfen, ob die E-Mail-Adresse einem Muster entspricht. Sie können aber immer noch E-Mails haben, die dem Muster entsprechen, aber meine E-Mails werden immer noch abgehackt oder gefälscht.

überprüfung mit einem regulären Ausdruck

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

überprüfung mit einer echten E-Mail-Validierungs-API

Sie können eine API verwenden, die überprüft, ob die E-Mail-Adresse echt ist und aktuell aktiv ist.

var emailAddress = "[email protected]"
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.
        }
    })

Weitere Informationen finden Sie unter https://isitarealemail.com oder Blogbeitrag

0
Stephen

Verwenden Sie jquery.validate.js , es hat Microsoft ajax CDN.

$('#form').validate({
    rules:{
        "name":{
            required:true,
            maxlength:40
        },

        "email":{
            required:true,
            email:true, //for validate email
            maxlength:100
        },

        "message":{
            required:true
        }
    }
});
0
NaveenDA

Wie bereits erwähnt, ist dieser gut genug, wenn Sie mich fragen.

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

Wenn Sie jedoch nicht möchten, dass die Domain-Endung (.com, .nu, .net usw.) Zahlen enthält (was meine bevorzugte Wahl ist), lautet die bearbeitete Version 

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