正则表达式,电子邮件验证从文本框中获取用户输入

时间:2017-05-15 09:45:04

标签: c# regex winforms email

我只是尝试使用文本框验证用户输入,验证工作我认为。但是,它只允许我一次输入一个字符。我不确定如何一次检查一个字符,直到他们输入完整的电子邮件地址。

我认为每次输入一个字符时都会检查,这会导致失败,直到复制并粘贴为止。

        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");



        }

    }

2 个答案:

答案 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");


            }
相关问题