我正在尝试使用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
来修复它。每当我让条目为空时,就会发生此错误。
答案 0 :(得分:2)
对于您的问题,更改操作数的顺序可能会有所帮助。 喜欢:
if (Email == null || !Regex.IsMatch(Email, emailPattern))
{
EmailIsWrong = true;
}
else{
EmailIsWrong = false;
}
如果满足第一个操作数,则第二个操作数将被跳过