代码之家  ›  专栏  ›  技术社区  ›  Amc_rtty

用正则表达式分析字符串

  •  2
  • Amc_rtty  · 技术社区  · 14 年前

    我试图搜索一个字符串的电子邮件地址,但我的正则表达式不工作,当字符串包含其他字符以外的电子邮件。意思是,如果我试着用一根小绳子me@email.com,正则表达式找到匹配项。如果我在字符串中插入一个空格,比如:“me@mail.com“,正则表达式找不到电子邮件匹配项。

                string emailpattern = @"^(([^<>()[\]\\.,;:\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 rEmail = new Regex(emailpattern);
                string str = @" me@mail.com";
                MatchCollection mcolResults = rEmail.Matches(str);
                MessageBox.Show(mcolResults.Count.ToString());
    

    请让我知道我做错了什么。

    非常感谢。

    5 回复  |  直到 14 年前
        1
  •  5
  •   Marc Gravell    14 年前

    ^ $ 分别表示输入文本(或多行模式中的行)的开始和结束-通常用于检查 整个的 文字(或线条)与图案匹配。所以如果你不想那样,就把它们拿走。

        2
  •  5
  •   David    14 年前

        3
  •  2
  •   Adibe7    14 年前

    你学习如何使用regex还是你真的需要解析电子邮件地址?

    有一个物体是专门设计用来做这件事的 MailAddress

    http://msdn.microsoft.com/en-us/library/591bk9e8.aspx

    当您使用包含格式不正确的邮件地址的字符串对其进行初始化时 FormatException

    祝你好运!

        4
  •  1
  •   Anton    14 年前

    您需要在开始时删除“^”。

    ^匹配字符串的开头。

        5
  •  0
  •   Merlyn Morgan-Graham    14 年前

    正则表达式是正确的。电子邮件地址不包含空格。

    您可以在regex中使用像\w这样的转义符来匹配空白,也可以在尝试匹配字符串之前使用str.Trim()来修复字符串。