在空条目上获取ArgumentNullException

时间:2019-01-02 01:39:06

标签: regex xamarin xamarin.forms

我正在尝试使用Regex验证Xamarin.Forms中用户键入的电子邮件。为此,我要求模式包括:

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;
            }

但是,发生错误,这是我的if语句上的System.ArgumentNullException: Value cannot be null. Parameter name: input。我尝试通过使用Email == null来修复它。每当我让条目为空时,就会发生此错误。

1 个答案:

答案 0 :(得分:2)

对于您的问题,更改操作数的顺序可能会有所帮助。 喜欢:

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

如果满足第一个操作数,则第二个操作数将被跳过