Эти валидации емейла, можете из готовых либ поискать
Вот, например в yii, так делают (часть кода)
email: function (value, messages, options) {
if (options.skipOnEmpty && pub.isEmpty(value)) {
return;
}
var valid = true,
regexp = /^((?:"?([^"]*)"?\s)?)(?:\s+)?(?:(<?)((.+)@([^>]+))(>?))$/,
matches = regexp.exec(value);
if (matches === null) {
valid = false;
} else {
var localPart = matches[5],
domain = matches[6];
if (options.enableIDN) {
localPart = punycode.toASCII(localPart);
domain = punycode.toASCII(domain);
value = matches[1] + matches[3] + localPart + '@' + domain + matches[7];
}
if (localPart.length > 64) {
valid = false;
} else if ((localPart + '@' + domain).length > 254) {
valid = false;
} else {
valid = options.pattern.test(value) || (options.allowName && options.fullPattern.test(value));
}
}
if (!valid) {
pub.addMessage(messages, options.message, value);
}
},