12

Normally validation of simple email is:

/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/

This will validate email like [email protected]

But how to validate if email is multiple?

entry 1: [email protected], [email protected], [email protected]
entry 2: [email protected] , [email protected] , [email protected]
entry 3: [email protected], [email protected] , [email protected]
entry 4: [email protected]

This emails is a possible entries that user will input. Also expect thier is 2 or 3 or 4 or more emails sometimes.

Thanks for the answers.

7 Answers 7

20

Split the emails on a comma and validate the entries

var x = getEmails();
var emails = x.split(",");
emails.forEach(function (email) {
  validate(email.trim());
});

Where getEmails() gets the emails from the page, and validate runs your regex against the emails

Sign up to request clarification or add additional context in comments.

Comments

7

try this

    function validateEmails(string) {
        var regex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        var result = string.replace(/\s/g, "").split(/,|;/);        
        for(var i = 0;i < result.length;i++) {
            if(!regex.test(result[i])) {
                return false;
            }
        }       
        return true;
    }

accept both comma and semicolon as separator

Comments

4

Here is a regex for multiple mail validation without split

function validateMultipleEmails(string) {
    var regex = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-\.]+)+([;]([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-\.]+))*$/;
    return regex.test(string);
}

https://regex101.com/r/TUXLED/1

Comments

1

You should be able to split the entry by commas, and then test the individual email subentries against the regexp.

var valid = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var entries = entry.split(",");

if(valid.test(entries[0]))...    //or however your testing against the regex

You might also want to trim any whitespace before testing any of the stripped email substrings.

Comments

0

Try this for jquery validation:

jQuery.validator.addMethod("multiemail", function (value, element) {
    if (this.optional(element)) {
        return true;
    }
    var emails = value.split(','),
        valid = true;
    for (var i = 0, limit = emails.length; i < limit; i++) {
        value = emails[i];
        valid = valid && jQuery.validator.methods.email.call(this, value, element);
    }
    return valid;
}, "Invalid email format: please use a comma to separate multiple email addresses.");

Comments

0

function validateEmail(emailAddress) {
  var emailPattern = /^(([^<>()[\]\\.,;:\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 emailPattern.test(emailAddress);
}

function validate() {
  $("#result").text("");
  var email = $("#emailAddress").val();
  if (validateEmail(email)) {
    $("#result").text(email + " validation successful");
    $("#result").css("color", "white");
  } else {
    $("#result").text(email + " validation failed");
    $("#result").css("color", "red");
  }
  return false;
}

$("form").bind("submit", validate);
.divSection{
  text-align: center; padding: 8%;
  }
.pSection{
  border: none;    color: white;    padding: 10px 100px;    text-align: center;    text-decoration: none;    display: inline-block;    font-size: 24px;    margin: 3% 0%;    border-radius: 6px;    -webkit-transition-duration: 0.4s;   transition-duration: 0.4s;    font-family: Roboto-Regular,Helvetica,Arial,sans-serif; background-color: #4184f3; margin: auto;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="divSection">
<form action="dashboard/user/profile" method="POST">
  <input id="emailAddress" placeholder="Enter Email" value="[email protected]">
  <input type='submit' value="check">
</form>
  </div>

<div class="divSection" >
<p class="pSection" id='result'></p>
</div>

This is javascript code to check if email contains more than one @ characters

var count=0;
email = "shubham20.ye@[email protected]";
alert(email);
for(i =0; i<email.length;i++){
if(email.charAt(i) == "@"){
count++;
}}
if(count>1){
   alert("not ok")
} else {
    alert("ok")
}

Alternate way is by using the standard pattern of the email

var pattern= /^(([^<>()\[\]\\.,;:\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,}))$/;
re.test(email);

Comments

0

Javascript multiple email regexp validation in ruby dynamic data

  <span id="error_message_<%= item.id %>" class="p-3 mb-2 text-danger text-center">Multiple emails must be separated by comma.</span>
  <%= text_field_tag :email, nil, style: 'width: 60%;', required: true, id: "emails_#{item.id}", placeholder: "Multiple emails must be separated by comma." %>
  $(document).ready(function() {

    document.getElementById("cc_submit_<%= item.id %>").disabled = true;

    document.getElementById('error_message_<%= item.id %>').style.display='none';

  });

  $('#emails_<%= item.id %>').keyup( function() {

    var emails = $('#emails_<%= item.id %>').val();
    var emails = emails.split(",");
    var valid = true;
    var regex = /^(([^<>()[\]\\.,;:\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,}))$/;
    var invalidEmails = [];
    for (var i = 0; i < emails.length; i++) {
      emails[i] = emails[i].trim();
      if( emails[i] == "" || ! regex.test(emails[i])){
        invalidEmails.push(emails[i]);
      }
    }

    if(invalidEmails != 0) {

      document.getElementById("cc_submit_<%= item.id %>").disabled = true;

      document.getElementById("error_message_<%= item.id %>").style.display='block';

      }
    else{

      document.getElementById("cc_submit_<%= item.id %>").disabled = false;
      document.getElementById('error_message_<%= item.id %>').style.display='none';

    }
  })

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.