Проверка регулярных выражений для электронной почты с определенным условием

#c# #.net #regex

Вопрос:

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

 public static bool IsValidEmail(string email)
        {
            var r = new Regex(@"^([0-9a-zA-Z]([-.'w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].) [a-zA-Z]{2,9})$");
            return !string.IsNullOrEmpty(email) amp;amp; r.IsMatch(email);
        }
 

Теперь хочу подтвердить это «abc@a.bb.com» электронная почта как действительный идентификатор электронной почты. какие изменения необходимо внести в регулярное выражение?

Комментарии:

1. Не используете регулярное выражение? Даже emailregex.com иногда это неправильно. Вы могли бы использовать docs.microsoft.com/en-us/dotnet/api/… вместо этого.

2. @джереми спасибо за ответ, я ищу необходимые изменения/правки в своем регулярном выражении, чтобы принять «abc@a.bb.com»

3. ([0-9a-zA-Z][-w]*[0-9a-zA-Z].) Это соответствует только поддоменам, которые начинаются и заканчиваются буквенно-цифровым символом и, следовательно, должны содержать 2 символа. Но я все равно не стал бы пытаться «исправить» регулярное выражение, потому что регулярное выражение никогда не будет на 100% правильным. Перестаньте пытаться использовать молоток для всего, используйте правильный инструмент. Если вы хотите проверить, действительно ли электронное письмо, попробуйте отправить код.

Ответ №1:

Использование этого регулярного выражения — не лучший способ проверки электронной почты.

Но, исправив ваше регулярное выражение в соответствии с заданным вами шаблоном, это было бы так:

 var r = new Regex(@"^([0-9a-zA-Z]([-.'w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z.]) [.a-zA-Z]{2,9})$");
 

Все еще настаивая на регулярном выражении, вы можете найти более полную схему в: https://www.ex-parrot.com/pdw/Mail-RFC822-Address.html

Я рекомендую вам использовать документацию Microsoft для адреса электронной почты, как предложил @Jeremy Lakeman -> >https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailaddress.попробуйте создать?просмотр=нетто-5.0