Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Validate and filter email address with RegEx?

What's the best way to disallow free email service emails (e.g. Gmail, Yahoo, Hotmail) using RegEx and Javascript email field validation?

^.*@(?!(aol\.com$|yahoo\.com$|hotmail\.com$))$

I've seen the generic "Validate email address in Javascript" solution here Validate email address in JavaScript? but cant figure out how to make it disallow Gmail, Yahoo and Hotmail.

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b
like image 343
Michael G. Avatar asked Feb 23 '23 06:02

Michael G.


1 Answers

One of thousands of acceptable ways to get there - not that yours isn't acceptable...

function isGoodEmail(email) {
    if(isValidEmail(email)) {
        if(/(aol|gmail|yahoo|hotmail)\.com$/.test(email)) {
           alert(' valid email, but not for this site.  No free service emails!');
           return false;
        }
        return true;
    }
    return false;
}

function isValidEmail(email) {
  // implement using any of the email regexp's available 
}
like image 178
Brian Avatar answered Mar 02 '23 21:03

Brian