UNPKG

890 BJavaScriptView Raw
1"use strict";
2
3var tester = /^[-!#$%&'*+\/0-9=?A-Z^_a-z{|}~](\.?[-!#$%&'*+\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-?\.?[a-zA-Z0-9])*\.[a-zA-Z](-?[a-zA-Z0-9])+$/;
4// Thanks to:
5// http://fightingforalostcause.net/misc/2006/compare-email-regex.php
6// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx
7// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378
8function validate(email)
9{
10 if (!email)
11 return false;
12
13 if(email.length>254)
14 return false;
15
16 var valid = tester.test(email);
17 if(!valid)
18 return false;
19
20 // Further checking of some things regex can't handle
21 var parts = email.split("@");
22 if(parts[0].length>64)
23 return false;
24
25 var domainParts = parts[1].split(".");
26 if(domainParts.some(function(part) { return part.length>63; }))
27 return false;
28
29 return true;
30}
31
32exports.validate = validate;