簡體   English   中英

IE用戶代理regexp(包括IE11和compat視圖)

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

一些可能有用的信息:

IE9的用戶代理字符串

與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。

IE11的用戶代理字符串:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM