[英]detecting emails inside an http header
我正在csharp中建立一個代理,我的任務之一就是在http標頭內找到電子郵件,問題是我收到的數據里面收到的是%40而不是@,有人可以告訴我如何才能檢測到電子郵件郵件地址內的@被替換為%40? 這是我在給定字符串中獲取電子郵件地址的代碼(使用@而不是%40) 代碼 :
string regexPattern = @"[A-Za-z0-9._%-]+@[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);
}
不確定我是否理解你的問題。 為什么不在你提供的正則表達式中用@
%40
替換@
? 所以:
string regexPattern = @"[A-Za-z0-9._%-]+%40[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";
在通過正則表達式運行數據之前對URL進行解碼 :
regex.Matches(this._context.Server.UrlDecode(this._context.Request.Headers[i]))
要么:
regex.Matches(HttpUtility.UrlDecode(this._context.Request.Headers[i]))
使用OR(|)允許@或“%40”
[A-ZA-Z0-9 ._% - ] +。(@ |%40)[A-ZA-Z0-9 .-] + [A-ZA-Z] {2,4}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.