正则表达式验证电子邮件,包括" +"符号

时间:2014-06-09 09:39:08

标签: c# .net regex email-validation

我正在使用包含正则表达式的字符串来验证电子邮件, 电子邮件正确验证,除非" +"符号包含在电子邮件中。 如果有人有一个电子邮件ID,假设像这样" billgates+apple@gmail.com", 所以在这一点上我的正则表达式不工作itz给我一个无效的用户名消息,因为否则电子邮件ID itz工作正常这里是我的正则表达式

 string strPattern = "^([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$";

我尝试使用其他正则表达式验证特殊符号,但我仍然有同样的错误。

 string strPattern = "^[a-zA-Z0-9]+([a-zA-Z0-9_.\\$&-]+)*@[a-zA-Z0-9]+([a-zA-Z0-9_.\\$&-]+)*\\.([a-zA-Z0-9]{2,4})$";

如果有人可以帮忙,那将是有用的,而不是

1 个答案:

答案 0 :(得分:0)

使用类似的内容应该有效:^([0-9a-zA-Z]([-.\\w\\+]*[0-9a-zA-Z\\+])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$

这假设您可以使用名称中的加号,但不能使用域。电子邮件也不能以加号开头。如果它是由一个字符组成的,则该字符也不能是加号。

此代码:

        string[] terms = new string[] {"bob@bobmail.com", "+@mail.com", "+bob@mail.com", "bob1+bob2@email.com", "bob1+@microsoft.com" };
        Regex regex = new Regex("^([0-9a-zA-Z]([-.\\w\\+]*[0-9a-zA-Z\\+])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$");
        foreach (string term in terms)
        {
            System.Console.WriteLine(regex.IsMatch(term));
        }
        System.Console.ReadKey();

收率:

True
False
False
True
True

我不知道你是否希望得到最后一个案例的结果(bob1+@microsoft.com)。