1

I am putting validation on email field but it shows error of invalid even where the email is typed in correct format.

Screenshot

Code

<script type="text/javascript">
function formvalidate(){
    var email=document.signup_form.email.value;

    var check_email= RegExp("^[A-Z0-9._-]+@[A-Z0-9.-]+\.[A-Z0-9.-]+$");

    if(email=="")
    {
        alert("cannot be empty!");
        document.signup_form.email.focus();
        return false;
    }

    else if(!check_email.test(email))
    {
        alert("enter valid email address!");
        document.signup_form.email.focus();
        return false;
    }
    else
    {
        return true;
    }
}

</script>

Thanks

Natha Odedara
  • 206
  • 3
  • 9

9 Answers9

1

1- Use this regular expressions instead

\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

2- Change this if (!check_email.test(email)) to

if (check_email.test(email))
Mehdi Dehghani
  • 9,600
  • 6
  • 56
  • 58
Ali Niazi
  • 19
  • 3
1

try this function

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

Please refer this fiddle : http://jsfiddle.net/gabrieleromanato/Ra85j/

NikuNj Rathod
  • 1,571
  • 1
  • 16
  • 25
0

Try this fuction

     function isEmail(inputString) {
     var regExpEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
         try {
              return regExpEmail.test(inputString.value);
             }
        catch (e) {
              return false;
               }

}

Nikhil Ghuse
  • 1,228
  • 13
  • 31
0

Change var check_email= RegExp("^[A-Z0-9._-]+@[A-Z0-9.-]+\.[A-Z0-9.-]+$"); to a function like this:

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);
}
KO.
  • 173
  • 3
  • 18
0

You regex is not correct, there are many things that you've not considered, like your regex accepts only capital letters, to include both capital and small letters you should use :

[a-zA-Z0-9]

not this :

[A-Z0-9]

You can use this regex for validating email :

/^(([^<>()\[\]\\.,;:\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,}))$/

read this for details

Community
  • 1
  • 1
Ashish Ranjan
  • 5,370
  • 1
  • 16
  • 39
0

Source and some tests

You can use this regex for email:

RegExp('\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b', 'i')
Justinas
  • 37,569
  • 4
  • 61
  • 88
0

try this example : email validation using JQuery

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

function validate() {
  $("#emailvalidate").text("");
  var email = $("#email").val();
  if (validateEmail(email)) {
    $("#emailvalidate").text(email + " is valid");
    $("#emailvalidate").css("color", "green");
  } else {
    $("#emailvalidate").text(email + " is not valid");
    $("#emailvalidate").css("color", "red");
  }
  return false;
}
$("form").bind("submit", validate);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form>
  <p>Enter an email address:</p>
  <input id='email'>
  <button type='submit' id='btn'>Validate</button>
</form>
<h2 id='emailvalidate'></h2>
Mahendra Kulkarni
  • 1,337
  • 2
  • 23
  • 35
0

Try this code -

function formvalidate()
{
    var email = document.signup_form.email.value;

    var check_email = RegExp("^([a-z0-9\\+_\\-]+)(\\.[a-z0-9\\+_\\-]+)*@([a-z0-9\\-]+\\.)+[a-z]{2,6}$", 'ig');

    if(email == "")
    {
        alert("cannot be empty!");
        document.signup_form.email.focus();
        return false;
    }

    else if(!check_email.test(email))
    {
        alert("enter valid email address!");
        document.signup_form.email.focus();
        return false;
    }
    else
    {
        return true;
    }
}
<form name="signup_form">
  <input type="text" name="email" value="" />
  <input type="button" name="validate" value="Validate" onclick="formvalidate()"/>
</form>
Vikash Kumar
  • 1,063
  • 9
  • 16
-1

Change your regular expression to below

^[a-zA-Z0-9._-]+@[A-Za-z0-9.-]+\.[a-zA-Z0-9.-]+$

Hope this helps :)

Mr.7
  • 2,065
  • 1
  • 21
  • 30