如何使用RegEx确保在我的TextBox中写入有效的电子邮件>?

时间:2009-10-03 14:08:20

标签: c# regex winforms formatting

我是RegEx的全新手,我相信一旦我知道如何使用它就会很棒。 :P

我有几个文本框,我想知道是否有人能够完成我需要的东西。

在电子邮件文本框中,我想让确定用户在有效的电子邮件中写入。 xxx@yyy.zzz RegEx有办法帮助我吗?

我也非常喜欢用格式化用户记下的名称的方法。因此,如果用户写入“ SerGIo TAPIA gutTIerrez 我想格式化该字符串(在保存之前的幕后)” Sergio Tapia Gutierrez “RegEx可以这样做吗?” / p>

非常感谢SO。

(inb4 Rex:P)

4 个答案:

答案 0 :(得分:3)

完整而准确的电子邮件验证正则表达式非常困难,我相信您可以使用谷歌查找一些示例。

电子邮件验证的一般规则是实际尝试发送电子邮件。

答案 1 :(得分:1)

嗯,这很简单! :)

  1. 不,没有可以验证*电子邮件地址的正则表达式;
  2. 不,正则表达式无法将“SerGIo TAPIA gutTIerrez”改造成“Sergio Tapia Gutierrez”。当然,像Perl这样的语言(以及其他可能的语言)可以混合使用regex-es中的一些奇特的东西来实现这一点,但它并不是真正执行转换的正则表达式。正则表达式只匹配简单明了的文本。
  3. *'有效'我的意思是看地址是否确实存在。

答案 2 :(得分:0)

http://www.cambiaresearch.com/c4/bf974b23-484b-41c3-b331-0bd8121d5177/Parsing-Email-Addresses-with-Regular-Expressions.aspx

public bool TestEmailRegex(string emailAddress)
{

//    string patternLenient = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
//    Regex reLenient = new Regex(patternLenient);

    string patternStrict = @"^(([^<>()[\]\\.,;:\s@""]+" 
        + @"(\.[^<>()[\]\\.,;:\s@""]+)*)|("".+""))@" 
        + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" 
        + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+" 
        + @"[a-zA-Z]{2,}))$";

    Regex reStrict = new Regex(patternStrict);

//    bool isLenientMatch = reLenient.IsMatch(emailAddress);
//    return isLenientMatch;

    bool isStrictMatch = reStrict.IsMatch(emailAddress);
    return isStrictMatch;
}

答案 3 :(得分:0)

这是一种方式,但还有很多方法。

public static bool isEmail(string emailAddress)
{
   if(string.IsNullOrEmpty(emailAddress))
      return false;

   Regex EmailAddress = 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})$");

   return EmailAddress.IsMatch(emailAddress);
}