Validate email address textbox using JavaScript

前端 未结 10 817
一个人的身影
一个人的身影 2020-12-02 17:03

I have a requirement to validate an email address entered when a user comes out from the textbox.
I have googled for this but I got form validation JScript; I don\'t wa

相关标签:
10条回答
  • 2020-12-02 17:33

    Assuming your regular expression is correct:

    inside your script tags

    function validateEmail(emailField){
            var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    
            if (reg.test(emailField.value) == false) 
            {
                alert('Invalid Email Address');
                return false;
            }
    
            return true;
    
    }
    

    in your textfield:

    <input type="text" onblur="validateEmail(this);" />
    
    0 讨论(0)
  • 2020-12-02 17:36
    function validateEmail(email) { 
        var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(email);
    } 
    

    To validate email id in javascript above code works.

    0 讨论(0)
  • 2020-12-02 17:36

    <h2>JavaScript Email Validation</h2>
    
    <input id="textEmail">
    
    <button type="button" onclick="myFunction()">Submit</button>
    
    <p id="demo" style="color: red;"></p>
    
    <script>
    function myFunction() {
        var email;
    
        email = document.getElementById("textEmail").value;
    
            var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    
            if (reg.test(textEmail.value) == false) 
            {
            document.getElementById("demo").style.color = "red";
                document.getElementById("demo").innerHTML ="Invalid EMail ->"+ email;
                alert('Invalid Email Address ->'+email);
                return false;
            } else{
            document.getElementById("demo").style.color = "DarkGreen";      
            document.getElementById("demo").innerHTML ="Valid Email ->"+email;
            }
    
       return true;
    }
    </script>
    
    0 讨论(0)
  • 2020-12-02 17:38

    This is quite an old question so I've updated this answer to take the HTML 5 email type into account.

    You don't actually need JavaScript for this at all with HTML 5; just use the email input type:

    <input type="email" />
    
    • If you want to make it mandatory, you can add the required parameter.

    • If you want to add additional RegEx validation (limit to @foo.com email addresses for example), you can use the pattern parameter, e.g.:

      <input type="email" pattern=".+@foo.com" />
      

    There's more information available on MozDev.


    Original answer follows


    First off - I'd recommend the email validator RegEx from Hexillion: http://hexillion.com/samples/

    It's pretty comprehensive - :

    ^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[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]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$
    

    I think you want a function in your JavaScript like:

    function validateEmail(sEmail) {
      var reEmail = /^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[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]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/;
    
      if(!sEmail.match(reEmail)) {
        alert("Invalid email address");
        return false;
      }
    
      return true;
    
    }
    

    In the HTML input you need to trigger the event with an onblur - the easy way to do this is to simply add something like:

    <input type="text" name="email" onblur="validateEmail(this.value);" />
    

    Of course that's lacking some sanity checks and won't do domain verification (that has to be done server side) - but it should give you a pretty solid JS email format verifier.

    Note: I tend to use the match() string method rather than the test() RegExp method but it shouldn't make any difference.

    0 讨论(0)
  • 2020-12-02 17:44

    Validating email is a very important point while validating an HTML form. In this page we have discussed how to validate an email using JavaScript :

    An email is a string (a subset of ASCII characters) separated into two parts by @ symbol. a "personal_info" and a domain, that is personal_info@domain. The length of the personal_info part may be up to 64 characters long and domain name may be up to 253 characters. The personal_info part contains the following ASCII characters.

    1. Uppercase (A-Z) and lowercase (a-z) English letters.
    2. Digits (0-9).
    3. Characters ! # $ % & ' * + - / = ? ^ _ ` { | } ~
    4. Character . ( period, dot or fullstop) provided that it is not the first or last character and it will not come one after the other.

    The domain name [for example com, org, net, in, us, info] part contains letters, digits, hyphens, and dots.

    Example of valid email id

    mysite@ourearth.com

    my.ownsite@ourearth.org

    mysite@you.me.net

    Example of invalid email id

    mysite.ourearth.com [@ is not present]

    mysite@.com.my [ tld (Top Level domain) can not start with dot "." ]

    @you.me.net [ No character before @ ]

    mysite123@gmail.b [ ".b" is not a valid tld ]

    mysite@.org.org [ tld can not start with dot "." ]

    .mysite@mysite.org [ an email should not be start with "." ]

    mysite()*@gmail.com [ here the regular expression only allows character, digit, underscore, and dash ]

    mysite..1234@yahoo.com [double dots are not allowed]

    JavaScript code to validate an email id

    function ValidateEmail(mail) {
            if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w {2, 3})+$/.test(myForm.emailAddr.value)) {
                return (true)
            }
            alert("You have entered an invalid email address!")
            return (false)
        }
    
    0 讨论(0)
  • 2020-12-02 17:46

    You should use below regex which have tested all possible email combination

         function validate(email) {
                var reg = "^[a-zA-Z0-9]+(\.[_a-zA-Z0-9]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,15})$";
                //var address = document.getElementById[email].value;
                if (reg.test(email) == false) 
                {
                    alert('Invalid Email Address');
                    return (false);
                }  
         }
    

    Bonus tip if you're using this in Input tag than you can directly add the regex in that tag example

    <input type="text"  
           name="email" 
           class="form-control"
           placeholder="Email" 
           required 
           pattern="^[a-zA-Z0-9]+(\.[_a-zA-Z0-9]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,15})$"/>
    

    Above you can see two attribute required & pattern in

    required make sure it input block have data @time of submit &
    pattern make sure it input tag validate based in pattern(regex) @time of submit

    For more info you can go throw doc

    0 讨论(0)
提交回复
热议问题