E-mailvalidatie met jQuery

Ik ben nieuw bij jQuery en vroeg me af hoe ik het kan gebruiken om e-mailadressen te valideren.


Antwoord 1, autoriteit 100%

Je kunt daarvoor normaal oud javascript gebruiken:

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

Antwoord 2, autoriteit 23%

jQuery-functie om e-mail te valideren

Ik hou er niet van om plug-ins te gebruiken, vooral niet als mijn formulier maar één veld heeft dat gevalideerd moet worden. Ik gebruik deze functie en roep deze aan wanneer ik een e-mailformulierveld moet valideren.

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

en nu om dit te gebruiken

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

Proost!


Antwoord 3, autoriteit 5%

Ik zou om een paar redenen de jQuery-validatieplug-ingebruiken.

Je hebt gevalideerd, oké, wat nu? U moet de fout weergeven, het wissen ervan afhandelen wanneer deze geldig is, weergeven hoeveel fouten er in totaal misschien zijn? Er zijn veel dingen die het voor u kan regelen, u hoeft het wiel niet opnieuw uit te vinden.

Een ander groot voordeel is dat het wordt gehost op een CDN, de huidige versie op het moment van dit antwoordis hier te vinden: http://www.asp.net/ajaxLibrary/CDNjQueryValidate16.ashxDit betekent snellere laadtijden voor de client.


Antwoord 4, autoriteit 5%

Bekijk http: //bassistance.de/jquery-plugins/jquery-plugin -validatie/. Het is een leuke jQuery-plug-in, waarmee een krachtig validatiesysteem voor formulieren kan worden gebouwd.
Er zijn hierenkele bruikbare voorbeelden. Dus, e-mailveldvalidatie in formulier ziet er zo uit:

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

Zie Documentatie over e-mailmethodevoor details en voorbeelden.


Antwoord 5, autoriteit 2%

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

Antwoord 6, Autoriteit 2%

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


Bron:htmldrive.com


Antwoord 7, autoriteit 2%

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

Antwoord 8, autoriteit 2%

Ik zou Verimail.jsaanraden, het heeft ook een JQuery-plug-in.

Waarom? Verimail ondersteunt het volgende:

  • Syntaxvalidatie (volgens RFC 822)
  • IANA TLD-validatie
  • Spellingsuggestie voor de meest voorkomende TLD’s en e-maildomeinen
  • Deny tijdelijke e-mailaccount domeinen zoals mailinator.com

Dus naast validatie, Verimail.js geeft je ook suggesties. Dus als je een e-mail te typen met de verkeerde TLD of het domein dat is zeer vergelijkbaar met een gewone e-mail domein (hotmail.com, gmail.com, etc), kan het deze detecteren en suggereren een correctie.

Voorbeelden:

En ga zo maar door ..

Om het te gebruiken met jQuery, net omvatten verimail. jquery.js op uw site en voer onderstaande functie:

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

De boodschap element een element waarin een bericht wordt weergegeven. Dit kan alles zijn van “Uw e-mail is ongeldig” tot “Bedoelde u …?”.

Als u een formulier en wilt u het zo te beperken dat het niet kan worden ingediend, tenzij de e-mail geldig is, dan kunt u de status met behulp van de getVerimailStatus-functie controleren zoals hieronder weergegeven:

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

Deze functie geeft een geheel statuscode naar het object Comfirm.AlphaMail.Verimail.Status. Maar de algemene vuistregel is dat alle codes onder 0 is codes aangebracht fouten.


Antwoord 9, Autoriteit 2%

Javascript E-mail Validatie in MVC / ASP.NET

Het probleem dat ik tegenkwam tijdens het gebruik van Fabian’s antwoord, is het implementeren in een MVC-weergave vanwege het Razor @-symbool. U moet een extra @-symbool toevoegen om eraan te ontsnappen, zoals: @@

Om scheermesjes in MVC te vermijden

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

Ik heb het nergens anders op deze pagina gezien, dus ik dacht dat het misschien nuttig zou zijn.

BEWERKEN

Hier is een linkvan Microsoft die het gebruik ervan beschrijft .
Ik heb zojuist de bovenstaande code getest en kreeg de volgende js:

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

Die precies doet wat hij moet doen.


Antwoord 10, autoriteit 2%

Een heel eenvoudige oplossing is om html5-validatie te gebruiken:

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

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


Antwoord 11, autoriteit 2%

Zoals anderen al hebben vermeld, kunt u een regex gebruiken om te controleren of het e-mailadres overeenkomt met een patroon. Maar je kunt nog steeds e-mails hebben die overeenkomen met het patroon, maar mijn nog steeds stuiteren of nep-spam-e-mails zijn.

controleren met een regex

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

controleren met een echte e-mailvalidatie-API

U kunt een API gebruiken die controleert of het e-mailadres echt en momenteel actief is.

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

Zie voor meer informatie https://isitarealemail.comof blogbericht


Antwoord 12

Dit voert een grondigere validatie uit, het controleert bijvoorbeeld op opeenvolgende punten in de gebruikersnaam, zoals [email protected]

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

Zie e-mailadres valideren met reguliere expressie in JavaScript.


Antwoord 13

Als u een basisformulier heeft, hoeft u alleen het invoertype e-mail in te voeren:
<input type="email" required>

Dit werkt voor browsers die HTML5-kenmerken gebruiken en dan heb je JS niet eens nodig. Alleen het gebruik van e-mailvalidatie, zelfs met sommige van de bovenstaande scripts, zal niet veel doen sinds:

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

etc… Worden allemaal gevalideerd als “echte” e-mails. U kunt er dus beter voor zorgen dat de gebruiker zijn e-mailadres twee keer moet invoeren om er zeker van te zijn dat ze hetzelfde invoeren. Maar om te garanderen dat het e-mailadres echt is, zou heel moeilijk maar erg interessant zijn om te zien of er een manier. Maar als je er alleen voor zorgt dat het een e-mail is, blijf dan bij de HTML5-invoer.

FIDDLE VOORBEELD

Dit werkt in FireFox en Chrome. Het werkt misschien niet in Internet Explorer… Maar internet explorer is waardeloos. Dus dan is er dat…


Antwoord 14

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

Gebruik als volgt:

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

Antwoord 15

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

Antwoord 16

<script type = "text/javascript" src="https://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" />

Antwoord 17

Hier geland… hier terechtgekomen:
https://html.spec.whatwg.org/ multipage/forms.html#valid-e-mail-address

…die de volgende regex opleverde:

/^[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])?)*$/

…die ik vond dankzij een opmerking over de jQuery Validation-plug-in readme:
https://github.com/jzaefferer/ jquery-validation/blob/master/README.md#reporting-an-issue

Dus de bijgewerkte versie van @Fabian‘s antwoordzou zijn:

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

Hopelijk helpt dat


Antwoord 18

gebruik dit

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

Antwoord 19

Bug zit in JQuery Validation Validation Plugin Valideert alleen met @ om dit te wijzigen

verander de code in deze

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

Antwoord 20

Voor degenen die een betere onderhoudbareoplossing willen gebruiken dan storende lichtjaar-lange RegEx-matches, heb ik een paar regels code geschreven. Degenen die bytes willen besparen, blijf bij de RegEx-variant 🙂

Dit beperkt:

  • Geen @ in tekenreeks
  • Geen punt in string
  • Meer dan 2 stippen na @
  • Onjuiste tekens in de gebruikersnaam (vóór @)
  • Meer dan 2 @ in string
  • Slechte tekens in domein
  • Slechte tekens in subdomein
  • Slechte tekens in TLD
  • TLD – adressen

Hoe dan ook, het is nog steeds mogelijk om door te lekken, dus zorg ervoor dat je dit combineert met een server-side validatie + e-mail-link verificatie.

Hier is deJSFiddle

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

Antwoord 21

Deze vraag is moeilijker om te antwoorden dan lijkt op het eerste gezicht. Als u correct wilt omgaan met e-mails.

Er waren veel mensen over de hele wereld op zoek naar “de regex om ze allemaal te regeren”, maar de waarheid is dat er tonen van e-mailproviders zijn.

Wat is het probleem? Wel, “A_Z%@gmail.com kan niet bestaan, maar het kan een adres zoals dat zijn via een andere provider” [email protected].

Waarom?
Volgens de RFC:
https://en.wikipedia.org/wiki/email_address#rfc_specification .

Ik neem een ​​fragment om de lezing te vergemakkelijken:

Het lokale deel van het e-mailadres kan een van deze ASCII-tekens gebruiken:

  • Hoofdletters en kleine letters Latijnse letters A tot Z en A tot Z;
  • cijfers 0 tot 9;
  • Speciale tekens! # $% & amp; ‘* + – / =? ^ _ `{|} ~;
  • Dot., Op voorwaarde dat het niet het eerste of laatste teken is, tenzij, en ook opgeleverd en ook opeenvolgend lijkt, tenzij (bijv. John..doe @ example.com is niet toegestaan, maar “John..doe” @ example.com is toegestaan); [6]
    Merk op dat sommige lokale onderdelen van de e-mailservers, meestal de tekens die een plustekens volgen, vaak de personages na een min, dus Fred + Bah @ domein en Fred + Foo @ domein kunnen in dezelfde inbox eindigen als Fred + @ domein of zelfs als Fred @ domein. Dit kan handig zijn voor het taggen van e-mails voor sorteren, zie hieronder en voor spamcontrole. Bretels {en} worden ook op die manier gebruikt, hoewel minder vaak.
  • Space en “(), :; & LT; & GT; @ [] tekens zijn toegestaan ​​met beperkingen (ze zijn alleen toegestaan ​​in een geciteerde tekenreeks, zoals beschreven in de onderstaande paragraaf, en bovendien een backslash of dubbele quote moet worden voorafgegaan door een backslash);
  • Opmerkingen zijn toegestaan ​​met haakjes aan beide uiteinden van het lokale deel; b.v. john.smith(Comment )@example.com en (Community)[email protected] zijn zowel equivalent aan [email protected].

Dus, ik kan een e-mailadres bezitten zoals dat:

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

Als u dit adres probeert, wed dat het in het geheel of het grote deel van RGEX is gepubliceerd dat overal op het net is geplaatst. Maar onthoud dat dit adres volgt op de RFC-regels, dus het is eerlijk geldig.

Stel je voor dat mijn frustratie niet kan registreren overal aangevinkt met die regex !!

De enige die echt een e-mailadres kan valideren is de aanbieder van het e-mailadres.

Hoe om te gaan, dus?

Het maakt niet uit of een gebruiker in bijna alle gevallen een niet-geldige e-mail toevoegt. U kunt vertrouwen op HTML 5-invoertype = “E-mail” die in de buurt van naar RFC wordt uitgevoerd, kleine kans om te falen.
HTML5-invoertype = “E-mail” info: https : //www.w3.org/tr/2012/wd-html-markup-20121011/input.email.html

Dit is bijvoorbeeld een RFC Geldige e-mail:

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

Maar de HTML5-validatie zal u vertellen dat de tekst vóór @ niet mag bevatten “of () chars, die eigenlijk onjuist is.

Hoe dan ook, u moet dit doen door het e-mailadres te accepteren en een e-mailbericht naar dat e-mailadres te verzenden, met een code / link de gebruiker moet bezoeken om de geldigheid te bevestigen.

Een goede praktijk tijdens het doen van dit is het “Voer uw e-mail weer” inputeren om de fouten van de gebruiker te voorkomen. Als dit niet genoeg voor u is, voegt u een modal-venster vooraf in met een titel “Is dit uw huidige e-mail?”, Dan ingevoerd door de gebruiker in een H2-tag, weet u, om duidelijk te laten zien welke E -mail die ze hebben ingevoerd, vervolgens een knop “Ja, verzenden”.


Antwoord 22

U kunt jQuery-validatie en, in een enkele HTML-lijn, kunt u de e-mail en de E-mail Validatiebericht: type="email" required data-msg-email="Enter a valid email account!"

U kunt de data-msg-e-mail parameter gebruiken om een ​​gepersonaliseerd bericht te plaatsen of anderszins deze parameter niet plaatsen en het standaardbericht wordt weergegeven: “Voer een geldig e-mailadres in.”

Volledig voorbeeld:

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

Antwoord 23

if($("input#email-address").getVerimailStatus() < 0) { 
(incorrect code)
}
if($("input#email-address").getVerimailStatus() == 'error') { 
(right code)
}

Antwoord 24

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]" );

Referentie: JQUERY UI-WEBSITE


Antwoord 25

u zou dit moeten zien:jquery.validate.js, voeg het toe aan uw project

het als volgt gebruiken:

<input id='email' name='email' class='required email'/>

Antwoord 26

Nog een eenvoudige en complete optie:

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

Antwoord 27

U kunt uw eigen functie maken

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]'));

Antwoord 28

een vereenvoudigde die ik zojuist heb gemaakt, doet wat ik nodig heb.
Hebben het beperkt tot gewoon alfanumeriek, periode, onderstrepingsteken en @.

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

Gemaakt met hulp van anderen


Antwoord 29

Deze regexp voorkomt dubbele domeinnamen zoals [email protected], het zal alleen domein twee keer als [email protected] mogelijk maken. Het staat ook niet toe dat de status van nummer zoals [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)?$/, 

Al het beste !!!!!


Antwoord 30

E-mail valideren tijdens het typen, met afhandeling van knopstatus.

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

Other episodes