2012-06-15 45 views
1

我在csharp中建立了一個代理,我的一個任務是在 裏面找到一個http頭裏面的電子郵件,問題是我得到的數據裏面是%40,而不是 @任何人都可以請告訴我,當@內部郵件地址被替換爲%40時,如何檢測電子郵件? 這裏是我的電子郵件地址,一個給定的字符串中(用@而不是40%而是)代碼 代碼檢測http標頭內的電子郵件

string regexPattern = @"[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}"; 
    Regex regex = new Regex(regexPattern); 
    MatchCollection matches = regex.Matches(this._context.Request.Headers[i]); 
    foreach (Match match in regex.Matches(this._context.Request.Headers[i])) 
    {// any email address should be printed 
     Console.WriteLine(match.Value); 
    } 

回答

1

URL decode你通過正則表達式運行之前的數據:

regex.Matches(this._context.Server.UrlDecode(this._context.Request.Headers[i])) 

或者:

regex.Matches(HttpUtility.UrlDecode(this._context.Request.Headers[i])) 
2

不知道如果我明白你的問題。你爲什麼不用你提供的正則表達式替換@%40? 所以:

string regexPattern = @"[A-Za-z0-9._%-]+%40[A-Za-z0-9.-]+\.[A-Za-z]{2,4}"; 
0

使用OR(|)允許@或 「%40」

[A-ZA-Z0-9 ._% - ] +(@ |%40)[A- 。ZA-Z0-9 .-] + [A-ZA-Z] {2,4}