Member 14101525 Ответов: 4

Как сделать так, чтобы текстовое поле вводило только адрес электронной почты


как только я ввожу первый символ в окне сообщения сразу же появляется недопустимая электронная почта

Что я уже пробовал:

если (textbox3 и.Текст.Содержит("@"))
{
если (textbox3 и.Текст.Содержит(".ком"))
{
Ящик для сообщений.Показать("Действительный Адрес Электронной Почты");
}
}
еще
{
Ящик для сообщений.Показать("Неверная Электронная Почта");
}

0x01AA

В случае, если вам нравится/нужно проверить формат адреса при каждом нажатии клавиши, я бы посоветовал вам не показывать окно сообщения, если оно недействительно. Лучше использовать метку, чтобы показать состояние пользовательского ввода.

4 Ответов

Рейтинг:
2

OriginalGriff

Проблема в том, что это правильно: все, что вы наберете для startwith, не будет действительным электронным письмом.
Подумайте об этом: ваша электронная почта "abc@def.ghi"
Когда вы набираете "а", это недопустимо.
Когда вы добавляете "b", он все еще не действителен.
If становится действительным только тогда, когда после 'было введено по крайней мере два символа.!
"abc@def.gh" технически это действительное электронное письмо, хотя оно, вероятно, не пойдет никуда полезным.

Вы не можете проверить наличие действительного электронного письма до тех пор, пока пользователь не закончит его вводить: так что либо сделайте свою проверку и покажите окно сообщения, когда он покинет текстовое поле (вот что такое События validating[^] есть для), Или используйте метку рядом с текстовым полем, чтобы показать вместо этого "недопустимый адрес электронной почты".

Но имейте в виду, что адреса электронной почты могут быть более сложными, чем вы думаете: это пройдет вашу проверку, но не будет действительным: "a.com@" пока эти не будут: "abc@talktalk.net", "abc.def.co.uk", "abc@usa.gov".

Попробуйте использовать регулярное выражение: регулярное выражение для действительной электронной почты - поиск Google[^] - это, вероятно, самый простой способ сделать базовую проверку "Окнесс", хотя единственный способ убедиться, что это "реальный адрес", - это отправить электронное письмо, которое требует перехода по ссылке.


Рейтинг:
1

MadMyche

Да, этого следовало ожидать. Вам нужно иметь полную запись, прежде чем вы сможете ее подтвердить. А тесты, которые у вас есть, очень примитивны и ограничивают вас.

Вы можете использовать шаблон регулярных выражений, чтобы увидеть, является ли полный адрес действительным или относительно близким. Правила адреса электронной почты настолько запутаны, что почти невозможно найти тот, который является 100% правильным.
Как проверить, что строки находятся в допустимом формате электронной почты | Microsoft Docs[^]

Другой метод, чтобы проверить, будет использовать класс адрес электронной почты, а валидатор/
Теория заключается в том, что этот конструктор будет возвращать исключения для нулевых, пустых и непризнанных форматов. Можно с уверенностью сказать, что если он выдает ошибку, то адрес плохой
Конструктор Почтовый Адрес (Системы.Нет.Почты) | Майкрософт Документы[^]

public bool IsValidEmail (string addy) {
  try {
    MailAddress test = new MailAddress(addy);
    return true;
  }
  catch (Exception) { return false; }
}


Рейтинг:
0

Patrice T

Цитата:
как только я ввожу первый символ в окне сообщения сразу же появляется недопустимая электронная почта

Это и есть принцип!
Адрес электронной почты не действителен до тех пор, пока он не будет завершен.
Один из способов справиться с этим-заменить окно сообщения изменением цвета в поле ввода, сделать его красным до тех пор, пока адрес не будет действительным.

Совет: используйте регулярное выражение для проверки адреса электронной почты, это облегчит проверку.
Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Онлайн-тестер регулярных выражений и отладчик: PHP, PCRE, Python, Golang и JavaScript[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]
Этот сайт также показывает регулярное выражение в красивом графике, но не может проверить, что соответствует регулярному выражению:
Regexper[^]