我把这个正则表达式组合在一起,它应该只返回用户代理字符串为IE5、6、7和8的匹配。显然,这里的主要目标之一是避免混淆的IE11用户代理字符串。
这个Regex有效吗(我漏掉了什么东西)?
.*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)’
^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/6\.0\)).*$发布于 2015-03-27 08:54:33
这是一个跨IE版本的用户代理字符串列表。要验证IE5、6、7和8用户代理字符串,只需在末尾检查“Trident/6.0”。
使用这个regex:^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$
编辑
据MSDN用户代理文档称,
当使用F12开发工具更改Internet的浏览器模式时,用户代理字符串的版本令牌将被修改为显示,使浏览器看起来是早期版本。 这样做是为了允许浏览器特定的内容被提供给Internet,并且通常只有当网站尚未更新以反映浏览器的当前版本时才有必要。 当发生这种情况时,三叉戟令牌将被添加到用户代理字符串中。 此令牌包含一个版本号,使您能够识别浏览器的版本,而不管当前的浏览器模式如何。
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).*$。
https://stackoverflow.com/questions/29296524
复制相似问题