我需要您的帮助,为用户代理字符串创建一个特定于 IE 的正则表达式。我的目标是获取正确的 IE 版本(包括 IE11),并检查浏览器是否正在运行“Compat View”。
因此,例如,我在正常模式下对 IE9 的期望结果:IE 9.0
以及在“兼容视图”中的 IE9:IE 9.0 CV
当不考虑兼容视图时,此模式最多适用于 IE 10:
MSIE ([0-9]{1,}[\.0-9]{0,})
但是,兼容视图中的 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 的 Compatibility View 将映射到 IE7 Standards Mode,并且在 Compatibility View 中 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”的递增 Trident 令牌允许网站区分在 Compat View 中运行的 IE9 和在 Compat View 中运行的 IE8。
Windows 7 IE11 示例:Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko