我只是尝试使用文本框验证用户输入,验证工作我认为。但是,它只允许我一次输入一个字符。我不确定如何一次检查一个字符,直到他们输入完整的电子邮件地址。
我认为每次输入一个字符时都会检查,这会导致失败,直到复制并粘贴为止。
string strRegex = @"^(?("")("".+?(?<!\\)""@)|(([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]))$";
Regex re = new Regex(strRegex);
if (re.IsMatch(txtEmail.Text) || txtEmail.Text == "" || txtEmail.Text.Length > 100 && txtEmail.Text.Length < 10)
{
MessageBox.Show("Thanks");
}
else
{
MessageBox.Show("Please enter a valid email address");
}
}
答案 0 :(得分:0)
您可能正在验证keyup,keydown事件。更改事件验证。
如果您在winform应用程序中进行操作,则可以在focusleave事件
上执行此操作答案 1 :(得分:0)
@Tetsuya Yamamoto这是我到目前为止所做的,但我不确定这是不是你的意思
string strRegex = @"^(?("")("".+?(?<!\\)""@)|(([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]))$";
Regex re = new Regex(strRegex);
if (re.IsMatch(txtEmail.Text) || txtEmail.Text == "" || txtEmail.Text.Length > 100 && txtEmail.Text.Length < 10)
{
try
{
var email = new MailAddress(strRegex);
MessageBox.Show("Thanks");
}
catch (FormatException)
{
MessageBox.Show("Wrong");
}