Получение ArgumentNullException для пустой записи - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь проверить введенное пользователем электронное письмо в Xamarin.Forms с помощью Regex. Для этого мне требуется, чтобы шаблон включал:

var emailPattern = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
    @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$";

Тогда я сопоставляю напечатанное письмо с шаблоном:

if (!Regex.IsMatch(Email, emailPattern) || Email == null)
            {
                    EmailIsWrong = true;
            }
            else{
                EmailIsWrong = false;
            }

Однако возникает ошибка, которая равна System.ArgumentNullException: Value cannot be null. Parameter name: input в моем операторе if. Я попытался исправить это, имея Email == null. Эта ошибка возникает всякий раз, когда я позволяю записи быть пустой.

1 Ответ

0 голосов
/ 02 января 2019

Для вашей проблемы может помочь изменение порядка операндов. Как:

if (Email == null || !Regex.IsMatch(Email, emailPattern))
        {
                EmailIsWrong = true;
        }
        else{
            EmailIsWrong = false;
        }

Если первый операнд удовлетворен, второй операнд будет пропущен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...