簡體   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