Список адресов электронной почты, которые могут быть использованы для проверки проверки javascript script
Есть ли у кого-нибудь список адресов электронной почты, которые я могу использовать для проверки моей проверки адреса JS script? Я ищу как полный список, так как разумно тестировать наиболее распространенные случаи кросс, если не во всех случаях.
Ответы
Ответ 1
Примеры действительны в соответствии с RFC2822
- [email protected]
- [email protected]
- [email protected]
- name\@tag @example.com - это действительный адрес электронной почты, содержащий два символа @.
- пробелы \are\[email protected]
- "могут быть указаны" @example.com
!
- # $% & '* + -/= ^ _ `{|} ~ @[1.0.0.127].?
!
- # $% & '* + -/= ^ _ `{|} ~ @[IPv6: 0123: 4567: 89AB: CDEF: 0123: 4567: 89AB: CDEF].?
- me (это комментарий) @example.com - комментарии не приветствуются, но не запрещены RFC2822.
Примеры недействительны в соответствии с RFC2822s
- мне @
- @example.com
- меня. @Example.com
- .me @example.com
- мне @example..com
- [email protected]
- мне \@example.com
От:
http://en.wikibooks.org/wiki/JavaScript/Best_Practices
Ответ 2
Теперь я собрал тестовые примеры от Cal Henderson, Dave Child, Phil Haack, Doug Lovell и RFC 3696. 164 тестовых адреса во всех.
Я провел все эти тесты со всеми проверками, которые я смог найти. Сравнение здесь: http://www.dominicsayers.com/isemail
Я постараюсь сохранить эту страницу в актуальном состоянии, так как люди повышают эффективность своих валидаторов. Благодаря Cal, Dave и Phil за помощь и сотрудничество в компиляции этих тестов и конструктивной критике моего собственного валидатора.
Люди должны знать об ошибках в отношении RFC 3696. Три из канонических примеров на самом деле являются неверными адресами. И максимальная длина адреса составляет 254 или 256 символов, не 320.
Ответ 3
Доменная часть (после последнего @) представляет собой ряд строковых меток, разделенных точкой.
Каждая метка представляет собой строку от 1 до 63 октетов, состоящую из A-Z, a-z 0-9 или дефиса (-)
Максимальный размер домена - 255 октетов.
Чтобы быть совместимым с arpanet, каждая метка должна начинаться с буквы и заканчиваться буквой или цифрой, но некоторые TLD: s теперь позволяет использовать весь числовой домен, например 0.nu
Обратите внимание, что TLD разрешено иметь 63 октета. Очень много скриптов ошибочно ограничивают его до 2-3 октетов, что делает domain.name недопустимым.
Пример
abcdefghijklmnopqrstuvwxyz.ABCDEFGHIJKLMNOPQRSTUVWXYZ # $% & '+ -/= ^ `{|}[email protected]9.abcdefghijklmnopqrstu.vwxyzABCDEFGHIJKLMNOP.QRSTUVWXYZ0.1.2.3.4.5.6.7.8.9.az.AZ.!.?. 0-9.a0.b1.c2.d3.e4.f5.g6.h7.i8.j9.K0.L1.M2.N3.O.domain.name
(и нет, он не зарегистрирован)
Обновление:
С IDNA почти все возможно:
См. также:
https://stackoverflow.com/info/3232/how-far-should-one-take-e-mail-address-validation
http://www.leshazlewood.com/?p=5
Обновление: Бобинс предложил проверить точку в доменном имени.
Резюме: проверяйте только @и точку в домене, а затем отправляйте электронное письмо с подтверждением.
Вот пример, который тестирует @и dot:
- Должен быть хотя бы один @
- В локальной части должно быть не менее одного char (pos > 0)
- В доменной части должна быть хотя бы одна точка
- Доменная часть должна быть не более 4 символов
Вот простой:
function isEmail(address) {
var pos = address.lastIndexOf("@");
return pos > 0 && (address.lastIndexOf(".") > pos) && (address.length - pos > 4);
}
Или функция, которая возвращает локальную и доменную часть в объекте (если вы хотите обработать ее еще дальше, например, преобразовать ее в punycode)
function isEmail(address) {
var pos = address.lastIndexOf("@");
return pos > 0 && (address.lastIndexOf(".") > pos) && (address.length - pos > 4) ?
{
local:address.substr(0,pos < 0 ? 0 : pos),
domain:address.substr(pos+1)
}: false;
}