Строгая проверка электронной почты в 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)<>"."
   )

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

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

Формат адреса электронной почты четко определен в 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)))

Другие вопросы по тегам