-1

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

4

5 回答 5

1

如果您用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
}

它不是比你的正则表达式更容易吗?

于 2012-08-06T15:13:17.610 回答
0

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

^(?:[-+~=!#$%&'*/?\^`{|}\w]+)(?:\.[-+~=!#$%&'*/?\^`{|}\w]+)*@(?:[a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,6}$
于 2012-08-02T06:21:29.747 回答
0
/^\w+([-+.'']*\w*)*@\w*([-.çöişğü]\w*)*\.\w+([-.]\w+)*$/
于 2012-08-02T06:31:33.950 回答
0

将第二个更改\w+\w*

^\w+([-+.''] \w* )*@\w*([-.çöişğü]\w*)*\.\w+([-.]\w+)*$
于 2012-08-02T06:44:06.090 回答
0

这是我专门用于电子邮件验证的正则表达式,但我不推荐这种方式,尤其是在商业环境中使用时;由于这个事实,在考虑电子邮件验证时,正则表达式过于严格。它们不允许为完全可能的域留出空间,并且包含所有这些可能性将需要一个很长的正则表达式,使其不稳定。

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



    }

}

这是solotuion,我建议哪个更稳定,更有效,并且使用EmailAddressAttribute,因为它是内置类并且允许mroe空间并且不像正则表达式那样严格。希望这可以帮助。

        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();
            }
        }
于 2017-05-19T13:09:47.733 回答