Строгая проверка электронной почты в Excel 2013
Я использую Excel 2013. Я создаю форму, которую будет заполнять конечный пользователь.
У меня есть ячейка, в которой пользователи могут ввести свой адрес электронной почты, и я хочу провести тщательную проверку электронной почты. Я много искал в Интернете, и все, что я нашел, это предложение искать наличие @
а также .
но если, например, конечный пользователь напечатает это: @@. com, ошибка не будет помечена.
Какова правильная проверка?
Примечание: я пытался использовать UDF и VBscript, которые я нашел в Интернете, и ни один из них не работает для меня.
2 ответа
Приспосабливая технику Билла Мэнвилла, это должно работать для вас. Войдите в Проверку данных и выберите Пользовательский. Введите эту формулу (если ваш адрес электронной почты находится в ячейке A2):
=AND(ISERROR(FIND(" ",A2)),LEN(A2)-LEN(SUBSTITUTE(A2,"@",""))=1,IFERROR(SEARCH("@",A2)<SEARCH(".",A2,SEARCH("@",A2)),0),NOT(IFERROR(SEARCH("@",A2),0)=1),NOT(IFERROR(SEARCH(".",A2,SEARCH("@",A2))-SEARCH("@",A2),0)=1),LEFT(A2,1)<>".",RIGHT(A2,1)<>".")
Вот та же формула, разнесенная, чтобы ее можно было прочитать:
=AND(
ISERROR(FIND(" ",A2))
,LEN(A2)-LEN(SUBSTITUTE(A2,"@",""))=1
,IFERROR(SEARCH("@",A2)<SEARCH(".",A2,SEARCH("@",A2)),0)
,NOT(IFERROR(SEARCH("@",A2),0)=1)
,NOT(IFERROR(SEARCH(".",A2,SEARCH("@",A2))-SEARCH("@",A2),0)=1)
,LEFT(A2,1)<>"."
,RIGHT(A2,1)<>"."
)
Это проверяет, что:
- Там нет пробелов
- Только один
@
условное обозначение - Есть несколько символов перед
@
условное обозначение - Хотя бы один
.
символ после@
условное обозначение - Как минимум один символ между
@
и после.
символы - Адрес не начинается и не заканчивается на
.
Формат адреса электронной почты четко определен в RFC 2822.
В основном вы можете упростить это следующим образом.
У вас есть две части: USER @ Domain.
Домен в десятичном формате с точками. Например, mydomain.tld, foo.bar.baz.net и т. Д.
Пользователь более сложный, это может быть строка в кавычках или точечный формат с контентом между точками и опцией + маркер.
Example1:
"@@pen00tje"@usersuper.ru
Пользователь @@penootje
, домен usersuper.ru
, Между именем пользователя и доменом стоит @.
Example2:
Jane.Smith@Usersuper.ru
Example3:
Jane.Smith+tag@Usersuper.ru
Это будет отправлено по почте с доставкой Jane.Smith@Usersuper.ru
но поле "To:" будет содержать Jane.Smith+tag@Usersuper.ru
, Это позволяет вашему почтовому клиенту фильтровать сообщения.
Неверный пример:
Джейн.. Смит @Usersuper.ru (две точки не допускаются под именем пользователя)
Большинство веб-форм, похоже, ошибаются. Даже крупные организации приходят в упадок, поскольку Dell и Visa терпят неудачу, когда сталкиваются с легальными, но неожиданными адресами электронной почты. Пожалуйста, прочитайте RFC. Поначалу читать то, что написано, нетривиально, но уже в формате, который идеально подходит для перевода в код (или в правила Excel). и это единственный источник истины для того, что разрешено.
= И (НЕ (ЕСТЬОШИБКА (НАЙТИ ("@"; A2))), НЕ (ЕСТЬОШИБКА (НАЙТИ (".",A2))), ЕСТЬОШИБКА (НАЙТИ (",",A2)), ЕСТЬОШИБКА (НАЙТИ (" ", A2)), RIGHT (A2,1)<>". ", ISNUMBER(MATCH (" @.?* ", A2,0)))