1

我需要一些代码来匹配所有不是 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)
4

2 回答 2

0

为什么要使用单个正则表达式,而两个会更简单。伪代码:

if String.matches('\bMSIE [1-6]\b') AND NOT String.matches('\bSV1\b')
于 2009-07-07T21:07:58.790 回答
0

您的正则表达式可以很好地匹配您正在寻找的用户代理,但您应该知道,某些浏览器的用户代理字符串中包含“MSIE 6.0”以实现兼容性。这是用户代理字符串的列表

于 2009-06-18T14:16:49.893 回答