繁体   English   中英

用正则表达式解析字符串

[英]parse string with regex

我正在尝试搜索字符串中的电子邮件地址,但是当字符串包含除电子邮件之外的其他字符时,我的正则表达式不起作用。 意思是,如果我尝试像“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());

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

谢谢。

最好的祝福,

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

从开头和结尾删除^和$。 它们分别表示“字符串的开头”和“字符串的结尾”。

您是否了解如何使用正则表达式或实际需要解析电子邮件地址?

有一个对象专门用于做MailAddress

这是MSDN文档: http//msdn.microsoft.com/en-us/library/591bk9e8.aspx

使用包含不正确格式的邮件地址的字符串初始化它时,将抛出FormatException

祝好运!

第一个明显的问题:您的表达式仅匹配字符串开头的电子邮件地址。 你需要在开始时删除^。

^匹配字符串的开头。

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

您可以在正则表达式中使用\\ w之类的转义符来匹配空格,或者您可以在尝试匹配它之前执行str.Trim()来修复字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM