[英]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.