Лучший шаблон регулярного выражения для сопоставления не SP1 IE6 в строке агента пользователя? - PullRequest
1 голос
/ 09 мая 2009

Мне нужно было немного кода, чтобы соответствовать всем версиям IE6, которые не являются SP1 (часть Windows XP SP2, путаница да) Это отключает gzip для версий IE, которые не обрабатывают его должным образом.

Лучшее, что я придумал, это:

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 голосов
/ 08 июля 2009

Зачем делать это с одним регулярным выражением, когда два будет проще. Псевдокод:

if String.matches('\bMSIE [1-6]\b') AND NOT String.matches('\bSV1\b')
0 голосов
/ 18 июня 2009

Ваше регулярное выражение выполняет хорошую работу по подбору искомого пользовательского агента, но вы должны знать, что некоторые браузеры имеют «MSIE 6.0» в строке пользовательского агента для совместимости. Вот список строк пользовательского агента .

...