Skip to content

Instantly share code, notes, and snippets.

@iampeterbanjo
Created July 27, 2011 21:52
Show Gist options
  • Save iampeterbanjo/1110460 to your computer and use it in GitHub Desktop.
Save iampeterbanjo/1110460 to your computer and use it in GitHub Desktop.
JavaScript email validation test
function log(message){
if(window.console){
console.log(message);
}
}
function warn(message){
if(window.console){
console.warn(message);
}
}
var passed = 0, failed = 0;
function assert(condition, ref){
if(condition){
log(ref + " passed");
passed++;
} else {
warn(ref + " failed");
failed++;
}
}
var validEmailRegex = /^[\w\W.-]+@[\w.-]+\.[\w.:]{2,}$/;
// test emails
function testEmails(){
log("** test emails");
log("these should pass");
assert(validEmailRegex.exec("has-dash@domain.com"), "has-dash@domain.com");
assert(validEmailRegex.exec("countryCodeTLD@domain.uk"), "countryCodeTLD@domain.uk");
assert(validEmailRegex.exec("countryCodeTLD@domain.rw"), "countryCodeTLD@domain.rw");
assert(validEmailRegex.exec("uncommonTLD@domain.travel"), "uncommonTLD@domain.travel");
assert(validEmailRegex.exec("uncommonTLD@domain.mobi"), "uncommonTLD@domain.mobi");
assert(validEmailRegex.exec("uncommonTLD@domain.museum"), "uncommonTLD@domain.museum");
assert(validEmailRegex.exec("lettersInDomain@911.com"), "lettersInDomain@911.com");
assert(validEmailRegex.exec("l3tt3rsAndNumb3rs@domain.com"), "l3tt3rsAndNumb3rs@domain.com");
assert(validEmailRegex.exec("hasApostrophe.oleary@domain.org"), "hasApostrophe.oleary@domain.org");
assert(validEmailRegex.exec("hasApostrophe.o'leary@domain.org"), "hasApostrophe.o'leary@domain.org");
assert(validEmailRegex.exec("underscore_inLocal@domain.net"), "underscore_inLocal@domain.net");
assert(validEmailRegex.exec("IPInsteadOfDomain@127.0.0.1"), "IPInsteadOfDomain@127.0.0.1");
assert(validEmailRegex.exec("IPAndPort@127.0.0.1:25"), "IPAndPort@127.0.0.1:25");
assert(validEmailRegex.exec("subdomain@sub.domain.com"), "subdomain@sub.domain.com");
assert(validEmailRegex.exec("local@dash-inDomain.com"), "local@dash-inDomain.com");
assert(validEmailRegex.exec("dot.inLocal@foo.com"), "dot.inLocal@foo.com");
assert(validEmailRegex.exec("a@singleLetterLocal.org"), "a@singleLetterLocal.org");
assert(validEmailRegex.exec("singleLetterDomain@x.org"), "singleLetterDomain@x.org");
assert(validEmailRegex.exec("&*=?^+{}'~@validCharsInLocal.net"), "&*=?^+{}'~@validCharsInLocal.net");
assert(validEmailRegex.exec("foor@bar.newTLD"), "foor@bar.newTLD");
log("these should fail");
assert(validEmailRegex.exec("@bar.newTLD"), "@bar.newTLD");
assert(validEmailRegex.exec("@bar"), "@bar");
assert(validEmailRegex.exec(".bar"), ".bar");
assert(validEmailRegex.exec("bar"), "bar");
assert(validEmailRegex.exec("Your email address"), "Your email address");
log("passed = " + passed);
log("failed = " + failed);
}
testEmails();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment