使用-字符的电子邮件正则表达式

本文关键字:电子邮件 正则表达式 字符 使用 | 更新日期: 2024-09-26 02:22:47

我使用此正则表达式检查电子邮件。/^'w+([-+.'']'w+)*@'w*([-.çöişğü]'w*)*'.'w+([-.]'w+)*$/但是这个正则表达式不接受像e-e--@hotmail.com那样的电子邮件。你能帮我如何更改我的正则表达式以接受这样的电子邮件吗?

使用-字符的电子邮件正则表达式

如果您使用c#标记标记您的问题,为什么不使用内置的System.Net.Mail.MailAddress类构造函数进行电子邮件验证?它支持许多邮件地址格式,并且涵盖了比正则表达式更多的场景。参见:

var isEmailValid = false;
try
{
    var email = new MailAddress("e-e--@hotmail.com");
    isValidEmail = true;
{
catch (FormatException x)
{
    // invalid email address
}

这不是比正则表达式更容易吗?

将第二个'w+更改为'w*:

^''w+([-+.'']''w*)*@''w*([-.çöişğü]''w*)*''.''w+([-.]''w+)*$

我在HTML5模式中使用它电子邮件模式:

^(?:[-+~=!#$%&'*/?'^`{|}'w]+)(?:'.[-+~=!#$%&'*/?'^`{|}'w]+)*@(?:[a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9]'.)+[a-zA-Z]{2,6}$
/^'w+([-+.'']*'w*)*@'w*([-.çöişğü]'w*)*'.'w+([-.]'w+)*$/

这是我专门用于电子邮件验证的正则表达式,但我不会以这种方式重新定义,尤其是在企业上下文中使用时;因为在考虑电子邮件验证时,正则表达式过于严格。它们不为可能复杂的域留出空间,并且要包含所有这些可能性,需要一个正则表达式,使其变得不稳定。

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

    }
}

我建议这是一个更稳定、更高效的独奏,并利用EmailAddressAttribute,因为它是一个内置类,允许mroe空间,并且不像regex那样严格。希望这能有所帮助。

        TextBox tb = new TextBox();
        tb.KeyDown += new KeyEventHandler(txtEmail_KeyDown);
        // Run Checks after the enter is pressed.
        if (e.KeyCode == (Keys.Enter) || e.KeyCode == (Keys.Tab))
        {
            if (!new EmailAddressAttribute().IsValid(txtEmail.Text))
            {
                MessageBox.Show(txtEmail.ToString() + " is not a valid Email address");
                txtEmail.Clear();
            }
            else
            {
                MessageBox.Show("The address: " + txtEmail + " is valid");
                txtEmail.Clear();
            }
        }