I hate it when I enter my perfectly valid email address on a website and it tells me it’s invalid. An address like
Before you write yet another validator script, please consult these pages for the proper pattern to use:
[url]http://simonslick.com/VEAF/
[url]http://en.wikibooks.org/wiki/Programming:JavaScript:Standards_and_Best_Practices
A list of websites and script sources that fail to validate correct addresses (a “hall of shame”) can be found here:
[url]http://mozilla.wikia.com/wiki/User:Me_at_work/plushaters
Perl, JavaScript, and PHP should all share the same underlying regex library, so most expressions should be compatible among all three languages.)[/QUOTE]Regex capabilities in JS ends with forward assertion. No backward assertion, only i, g and m modifiers, no conditionals or any other fancy stuff. PHP and Perl can do far more than JS with regex.
[CODE]/////VALIDATE E-MAIL
function endOption(emailStr,val) {
return emailStr.substring(emailStr.lastIndexOf(val)) == val;
} //tld options //OK
function validate_email(emailStr)
{
apos=emailStr.indexOf("@");
dotpos=emailStr.lastIndexOf(".");
if (apos<1||dotpos-apos<2)
{
return false;
}
if (!endOption(emailStr,'.biz') && !endOption(emailStr,'.com') && !endOption(emailStr,'.edu') && !endOption(emailStr,'.gob') && !endOption(emailStr,'.gov') && !endOption(emailStr,'.info') &&!endOption(emailStr,'.int') &&!endOption(emailStr,'.jobs') &&!endOption(emailStr,'.mil') && !endOption(emailStr,'.mobi') &&!endOption(emailStr,'.museum') && !endOption(emailStr,'.name') && !endOption(emailStr,'.net') && !endOption(emailStr,'.org') &&!endOption(emailStr,'.pro') &&!endOption(emailStr,'.travel') && !endOption(emailStr,'.ac') && !endOption(emailStr,'.ad') && !endOption(emailStr,'.ae') && !endOption(emailStr,'.aero') && !endOption(emailStr,'.af') && !endOption(emailStr,'.ag') && !endOption(emailStr,'.ai') && !endOption(emailStr,'.al') && !endOption(emailStr,'.am') && !endOption(emailStr,'.an') && !endOption(emailStr,'.ao') && !endOption(emailStr,'.aq') && !endOption(emailStr,'.ac') && !endOption(emailStr,'.arpa') && !endOption(emailStr,'.as') && !endOption(emailStr,'.at') && !endOption(emailStr,'.au') && !endOption(emailStr,'.aw') && !endOption(emailStr,'.ax') && !endOption(emailStr,'.az') && !endOption(emailStr,'.ba') && !endOption(emailStr,'.bb') && !endOption(emailStr,'.bd') && !endOption(emailStr,'.be') && !endOption(emailStr,'.bf') && !endOption(emailStr,'.bg') && !endOption(emailStr,'.bh') && !endOption(emailStr,'.bi') && !endOption(emailStr,'.bj') && !endOption(emailStr,'.bm') && !endOption(emailStr,'.bn') && !endOption(emailStr,'.bo') && !endOption(emailStr,'.br') && !endOption(emailStr,'.bs') && !endOption(emailStr,'.bt') && !endOption(emailStr,'.bv') && !endOption(emailStr,'.bw') && !endOption(emailStr,'.by') && !endOption(emailStr,'.bz') && !endOption(emailStr,'.ca') && !endOption(emailStr,'.cat') && !endOption(emailStr,'.cc') && !endOption(emailStr,'.cd') && !endOption(emailStr,'.cf') && !endOption(emailStr,'.cg') && !endOption(emailStr,'.ch') && !endOption(emailStr,'.ci') && !endOption(emailStr,'.ck') && !endOption(emailStr,'.cl') && !endOption(emailStr,'.cm') && !endOption(emailStr,'.cn') && !endOption(emailStr,'.co') && !endOption(emailStr,'.cr') && !endOption(emailStr,'.cu') && !endOption(emailStr,'.cv') && !endOption(emailStr,'.cx') && !endOption(emailStr,'.cy') && !endOption(emailStr,'.cz') && !endOption(emailStr,'.de') && !endOption(emailStr,'.dj') && !endOption(emailStr,'.dk') && !endOption(emailStr,'.dm') && !endOption(emailStr,'.do') && !endOption(emailStr,'.dz') &&!endOption(emailStr,'.ec') &&!endOption(emailStr,'.ee') &&!endOption(emailStr,'.eg') &&!endOption(emailStr,'.er') &&!endOption(emailStr,'.es') &&!endOption(emailStr,'.et') &&!endOption(emailStr,'.eu') &&!endOption(emailStr,'.fi') &&!endOption(emailStr,'.fj') &&!endOption(emailStr,'.fm') &&!endOption(emailStr,'.fo') &&!endOption(emailStr,'.fr') &&!endOption(emailStr,'.ga') &&!endOption(emailStr,'.gb') &&!endOption(emailStr,'.gd') &&!endOption(emailStr,'.ge') &&!endOption(emailStr,'.gf') &&!endOption(emailStr,'.gg') &&!endOption(emailStr,'.gh') &&!endOption(emailStr,'.gi') &&!endOption(emailStr,'.gl') &&!endOption(emailStr,'.gm') &&!endOption(emailStr,'.gn') &&!endOption(emailStr,'.gp') &&!endOption(emailStr,'.gq') &&!endOption(emailStr,'.gr') &&!endOption(emailStr,'.gs') &&!endOption(emailStr,'.gt') &&!endOption(emailStr,'.gu') &&!endOption(emailStr,'.gw') &&!endOption(emailStr,'.gy') &&!endOption(emailStr,'.hk') &&!endOption(emailStr,'.hm') &&!endOption(emailStr,'.hn') &&!endOption(emailStr,'.hr') &&!endOption(emailStr,'.ht') &&!endOption(emailStr,'.hu') &&!endOption(emailStr,'.id') &&!endOption(emailStr,'.ie') &&!endOption(emailStr,'.il') &&!endOption(emailStr,'.im') &&!endOption(emailStr,'.in') &&!endOption(emailStr,'.io') &&!endOption(emailStr,'.iq') &&!endOption(emailStr,'.ir') &&!endOption(emailStr,'.is') &&!endOption(emailStr,'.it') &&!endOption(emailStr,'.je') &&!endOption(emailStr,'.jm') &&!endOption(emailStr,'.jo') &&!endOption(emailStr,'.jp') &&!endOption(emailStr,'.ke') &&!endOption(emailStr,'.kg') &&!endOption(emailStr,'.kh') &&!endOption(emailStr,'.ki') &&!endOption(emailStr,'.km') &&!endOption(emailStr,'.kn') &&!endOption(emailStr,'.kr') &&!endOption(emailStr,'.kw') &&!endOption(emailStr,'.ky') &&!endOption(emailStr,'.kz') &&!endOption(emailStr,'.la') &&!endOption(emailStr,'.lb') &&!endOption(emailStr,'.lc') &&!endOption(emailStr,'.li') &&!endOption(emailStr,'.lk') &&!endOption(emailStr,'.lr') &&!endOption(emailStr,'.ls') &&!endOption(emailStr,'.lt') &&!endOption(emailStr,'.lu') &&!endOption(emailStr,'.lv') &&!endOption(emailStr,'.ly') &&!endOption(emailStr,'.ma') &&!endOption(emailStr,'.mc') &&!endOption(emailStr,'.md') &&!endOption(emailStr,'.mg') &&!endOption(emailStr,'.mh') &&!endOption(emailStr,'.mk') &&!endOption(emailStr,'.ml') &&!endOption(emailStr,'.mm') &&!endOption(emailStr,'.mn') &&!endOption(emailStr,'.mo') &&!endOption(emailStr,'.mp') &&!endOption(emailStr,'.mq') &&!endOption(emailStr,'.mr') &&!endOption(emailStr,'.ms') &&!endOption(emailStr,'.mt') &&!endOption(emailStr,'.mu') &&!endOption(emailStr,'.mv') &&!endOption(emailStr,'.mw') &&!endOption(emailStr,'.mx') &&!endOption(emailStr,'.my') &&!endOption(emailStr,'.mz') &&!endOption(emailStr,'.na') &&!endOption(emailStr,'.nc') &&!endOption(emailStr,'.ne') &&!endOption(emailStr,'.nf') &&!endOption(emailStr,'.ng') &&!endOption(emailStr,'.ni') &&!endOption(emailStr,'.nl') &&!endOption(emailStr,'.no') &&!endOption(emailStr,'.np') &&!endOption(emailStr,'.nr') &&!endOption(emailStr,'.nu') &&!endOption(emailStr,'.nz') &&!endOption(emailStr,'.om') &&!endOption(emailStr,'.pa') &&!endOption(emailStr,'.pe') &&!endOption(emailStr,'.pf') &&!endOption(emailStr,'.pg') &&!endOption(emailStr,'.ph') &&!endOption(emailStr,'.pk') &&!endOption(emailStr,'.pl') &&!endOption(emailStr,'.pm') &&!endOption(emailStr,'.pn') &&!endOption(emailStr,'.pr') &&!endOption(emailStr,'.ps') &&!endOption(emailStr,'.pt') &&!endOption(emailStr,'.pw') &&!endOption(emailStr,'.py') &&!endOption(emailStr,'.qa') &&!endOption(emailStr,'.re') &&!endOption(emailStr,'.ro') && !endOption(emailStr,'.rr') && !endOption(emailStr,'.ru') &&!endOption(emailStr,'.rw') &&!endOption(emailStr,'.sa') &&!endOption(emailStr,'.sb') &&!endOption(emailStr,'.sc') &&!endOption(emailStr,'.sd') &&!endOption(emailStr,'.se') &&!endOption(emailStr,'.sg') &&!endOption(emailStr,'.sh') &&!endOption(emailStr,'.si') &&!endOption(emailStr,'.sk') &&!endOption(emailStr,'.sl') &&!endOption(emailStr,'.sm') &&!endOption(emailStr,'.so') &&!endOption(emailStr,'.sr') &&!endOption(emailStr,'.ss') &&!endOption(emailStr,'.st') &&!endOption(emailStr,'.su') &&!endOption(emailStr,'.sv') &&!endOption(emailStr,'.sy') &&!endOption(emailStr,'.sz') &&!endOption(emailStr,'.tc') &&!endOption(emailStr,'.td') &&!endOption(emailStr,'.tf') &&!endOption(emailStr,'.tg') &&!endOption(emailStr,'.th') &&!endOption(emailStr,'.tj') &&!endOption(emailStr,'.tk') &&!endOption(emailStr,'.tl') &&!endOption(emailStr,'.tm') &&!endOption(emailStr,'.tn') &&!endOption(emailStr,'.to') &&!endOption(emailStr,'.tp') &&!endOption(emailStr,'.tr') &&!endOption(emailStr,'.tt')&& !endOption(emailStr,'.tv') &&!endOption(emailStr,'.tw') &&!endOption(emailStr,'.tz') && !endOption(emailStr,'.ua') && !endOption(emailStr,'.ug') && !endOption(emailStr,'.uk') && !endOption(emailStr,'.um') && !endOption(emailStr,'.us') && !endOption(emailStr,'.uy') && !endOption(emailStr,'.uz') && !endOption(emailStr,'.va') && !endOption(emailStr,'.vc') && !endOption(emailStr,'.ve') && !endOption(emailStr,'.vg') && !endOption(emailStr,'.vi') && !endOption(emailStr,'.vn') && !endOption(emailStr,'.vu') && !endOption(emailStr,'.wf') && !endOption(emailStr,'.ws') && !endOption(emailStr,'.ye') && !endOption(emailStr,'.yu') && !endOption(emailStr,'.za') && !endOption(emailStr,'.zm') && !endOption(emailStr,'.zw')) //tld options // OK
{
return false;
}
else
{
return true;
}
}[/CODE]
0.1.9 — BETA 5.18