[英]IE user agent regexp (including IE11 and compat view)
我需要您的幫助為用戶代理字符串創建IE特定的正則表達式。 我的目標是獲得正確的IE版本(包括IE11),並檢查瀏覽器是否正在運行“Compat View”。
因此,例如,我在正常模式下對IE9的期望結果:“Compat View”中的IE 9.0
和IE9: IE 9.0 CV
當不考慮compat視圖時,此模式適用於最高IE 10: MSIE ([0-9]{1,}[\\.0-9]{0,})
但是,compat視圖中的IE9將具有類似於... MSIE 7.0 ... Trident/5.0
的用戶代理字符串。 此外,IE11將在字符串中完全使用MSIE
(參見下面的示例)。
我不太了解正則表達式,所以我需要你對模式的幫助。 雖然我認為三叉戟模式應該非常明顯, /Trident\\/\\d/
。
我將在C#中使用它,所以我想我需要做這樣的事情(建議歡迎):
var regex = new Regex(@"MSIE ([0-9]{1,}[\.0-9]{0,})");
var match = regex.Match(Request.UserAgent);
if (match.Success)
//handle match.Groups
一些可能有用的信息:
與IE8類似,IE9的兼容性視圖將映射到IE7標准模式,而兼容性視圖中的IE9的UA字符串將是:
Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.0; Trident / 5.0)在兼容性視圖中,IE9通過應用程序版本號(Mozilla / 4.0)和版本令牌(MSIE 7.0)將自身報告為IE7。 這樣做是為了兼容性。 從“Trident / 4.0”到“Trident / 5.0”的遞增三叉戟令牌允許網站區分在Compat View中運行的IE9和在Compat View中運行的IE8。
Windows 7 IE11示例: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
使用正則表達式模式
(?:\b(MS)?IE\s+|\bTrident\/7\.0;.*\s+rv:)(\d+)
您匹配所有當前已知的IE瀏覽器用戶代理字符串以及IE的組#1確定版本中的數字匹配(如果未在兼容性視圖中運行)。
要查明IE是否在兼容性視圖中運行,請查找匹配項
\bMSIE\s+7\.0;.*\bTrident\/(\d+)\.0
組#1中的數字匹配(在關鍵字“Trident”之后)在兼容性視圖中確定IE的版本,如下所示:
4 -> IE 8 in CV
5 -> IE 9 in CV
6 -> IE 10 in CV
7 -> IE 11 in CV
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.