Я использую Excel 2013. Я создаю форму, которую заполнит конечный пользователь.

У меня есть ячейка, в которой пользователи могут ввести свой адрес электронной почты, и я хочу провести тщательную проверку электронной почты. Я много искал в Интернете, и все, что я нашел, это предложение искать наличие @ и . но если, например, конечный пользователь напечатает это: @@. com, ошибка не будет помечена.

Какова правильная проверка?

Примечание: я пытался использовать UDF и VBscript, который я нашел в Интернете, и ни один из них не работает для меня.

2 ответа2

1

Приспосабливая технику Билла Мэнвилла, это должно работать для вас. Войдите в Проверку данных и выберите Пользовательский. Введите эту формулу (если ваш адрес электронной почты находится в ячейке 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)<>"."
   )

Это проверяет, что:

  1. Там нет пробелов
  2. Только один символ @
  3. Перед символом @ символов
  4. Хотя бы один . символ после символа @
  5. Как минимум один символ между @ и следующим . символы
  6. Адрес не начинается и не заканчивается на .
0

Формат адреса электронной почты четко определен в RFC 2822.

В основном вы можете упростить это следующим образом.

У вас есть две части: USER @ Domain.

Домен в точечно-десятичном формате. Например, mydomain.tld, foo.bar.baz.net и т.д.

Пользователь более сложный, это может быть строка в кавычках или точечный формат с контентом между точками и опцией + маркер.

Example1:
"@@pen00tje"@superuser.com
Пользователь @@penootje . домен superuser.com . Между именем пользователя и доменом стоит @.

Example2:
Джейн.Smith@Superuser.com

Example3:
Джейн.Smith+tag@Superuser.com
Это будет отправлено по почте с адресом доставки Jane.Smith@Superuser.com но в поле «To:» будет содержаться Jane.Smith+tag@Superuser.com . Это позволяет вашему почтовому клиенту фильтровать сообщения.

Неверный пример:
Джейн..Smith@Superuser.com (две точки не допускаются под именем пользователя)

Большинство веб-форм, похоже, ошибаются. Даже крупные организации приходят в упадок, поскольку Dell и Visa терпят неудачу, когда сталкиваются с легальными, но неожиданными адресами электронной почты. Пожалуйста, прочитайте RFC. Поначалу читать то, что написано, нетривиально, но уже в формате, который идеально подходит для перевода в код (или в правила Excel). и это единственный источник истины для того, что разрешено.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .