UNPKG

857 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.length>254)
11 return false;
12
13 var valid = tester.test(email);
14 if(!valid)
15 return false;
16
17 // Further checking of some things regex can't handle
18 var parts = email.split("@");
19 if(parts[0].length>64)
20 return false;
21
22 var domainParts = parts[1].split(".");
23 if(domainParts.some(function(part) { return part.length>63; }))
24 return false;
25
26 return true;
27}
28
29exports.validate = validate;