在用户代理字符串中匹配非SP1 IE6的最佳正则表达式模式?

时间:2009-05-09 08:52:01

标签: regex user-agent

我需要一些代码来匹配所有不是SP1的IE6版本(Windows XP SP2的一部分,令人困惑)。这是为了无法正确处理它的IE版本关闭gzip。

我想出的最好的是:

MSIE [1-6]\.(?!.*?SV1)

有没有人有更好的模式?上面的正则表达式基本上是先行确保SV1(表示SP1)不存在。

出于测试目的,这不应该匹配:

Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325)

但这应该:

Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0)

2 个答案:

答案 0 :(得分:0)

您的正则表达式可以很好地匹配您正在寻找的用户代理,但您应该知道某些浏览器在其用户代理字符串中具有“MSIE 6.0”以实现兼容性。这是a list of user-agent strings

答案 1 :(得分:0)

为什么单一的正则表达式,当两个更简单时。伪代码:

if String.matches('\bMSIE [1-6]\b') AND NOT String.matches('\bSV1\b')