首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测IE 5、6、7和8的Regex,但没有其他

检测IE 5、6、7和8的Regex,但没有其他
EN

Stack Overflow用户
提问于 2015-03-27 08:48:36
回答 1查看 3.3K关注 0票数 4

我把这个正则表达式组合在一起,它应该只返回用户代理字符串为IE5、6、7和8的匹配。显然,这里的主要目标之一是避免混淆的IE11用户代理字符串。

这个Regex有效吗(我漏掉了什么东西)?

代码语言:javascript
复制
.*MSIE [5-8]\b((?!Trident/4.0)).*

更新

以下内容匹配5、6、7和8的所有用户代理字符串。

‘'Mozilla/4.0 (兼容;MSIE7.0;Windows 6.3;WOW64;三叉戟/ 7.0;.NET4.0E;.NET4.0C;.NET CLR 3.5.30729;.NET CLR 2.0.50727;.NET CLR 3.0.30729)’

代码语言:javascript
复制
^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/6\.0\)).*$
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-27 08:54:33

这是一个跨IE版本的用户代理字符串列表。要验证IE5、6、7和8用户代理字符串,只需在末尾检查“Trident/6.0”。

使用这个regex:^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$

regex101实例

编辑

MSDN用户代理文档称,

当使用F12开发工具更改Internet的浏览器模式时,用户代理字符串的版本令牌将被修改为显示,使浏览器看起来是早期版本。 这样做是为了允许浏览器特定的内容被提供给Internet,并且通常只有当网站尚未更新以反映浏览器的当前版本时才有必要。 当发生这种情况时,三叉戟令牌将被添加到用户代理字符串中。 此令牌包含一个版本号,使您能够识别浏览器的版本,而不管当前的浏览器模式如何。

代码语言:javascript
复制
Token         Description
Trident/7.0   IE11
Trident/6.0   Internet Explorer 10
Trident/5.0   Internet Explorer 9
Trident/4.0   Internet Explorer 8

因此,regex应该检查MSIE版本是否后面没有‘tri叉子/5.0’,直到‘tri叉子/7.0’:^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$。发布三叉戟/10+时,必须对其进行更新。或者,这里是:^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/(?:[5-9]|1[0-9])\.0).*$

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29296524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档