2014-12-02 3 views
2

Я пытаюсь написать шаблон регулярного выражения в Java, чтобы обнаружить, если агент пользователя меньше или равно Internet Explorer 9. Есть немало примеров здесь:Регулярное определение IE9 и ниже?

http://www.useragentstring.com/pages/Internet%20Explorer/

Основная суть есть будет строка в строке агента пользователя под названием:. «MSIE XXXX) Мой текущий шаблон регулярного выражения заключается в следующем:.

MSIE ([1-9]|9) 

Который, кажется, работает, за исключением есть проблемы, когда я MSIE 10,0 или MSIE 11,0 соответствует любому идеи о том, как соответствовать только 1-9 и не 10,0 или 11?

+0

Что случилось с 'MSIE [1-9]'? –

+0

@AvinashRaj Что это будет потенциально соответствовать IE 10. – Tomalak

+0

, тогда ему нужны якоря. '^ MSIE [1-9] $' –

ответ

1

В старых версиях, всегда есть точка после основного номера версии, вы можете использовать его в регулярном выражении:

MSIE [1-9]\.

Другой способ написать это ожидать одно число от 1 до 9 после чего, не количество полукокса:

MSIE [1-9][^0-9]

1

соответствует только 5-9, а не 1-9. Практически 0 пользователей используют IE 4 и ниже.

+0

Альтернативно используйте границу слова. 'MSIE ([1-9]) \ b'. – Tomalak

+0

Эта строка пользовательского агента официально не существует, следовательно, она должна быть подделана, поэтому кому это нужно. – Tomalak

Смежные вопросы