Соответствие версии браузера Regex - PullRequest
0 голосов
/ 10 августа 2009

У меня есть строка:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)

Я хочу знать, какая версия Firefox находится в строке (3.5.2).

Мое текущее регулярное выражение:

Firefox\/[0-9]\.[0-9]\.[0-9]

и возвращается Firefox/3.5.2

Я только хочу, чтобы он возвращал 3.5.2 из версии Firefox, а не другие версии в строке. Я уже знаю, что браузер Firefox.

Ответы [ 5 ]

3 голосов
/ 10 августа 2009
(?<=Firefox/)\d+(?:\.\d+)+

вернет 3.5.2 в качестве полного соответствия (с использованием lookbehind - что доступно не во всех разновидностях регулярных выражений, особенно в JavaScript).

Итак, если это должен быть JavaScript, ищите Firefox/(\d+(?:\.\d+)+) и используйте совпадение №. 1.

Поскольку в теории может быть более одной цифры (скажем, версия 3.10.0), я также изменил эту часть регулярного выражения, допуская одну или несколько цифр для каждого числа. Кроме того, нет необходимости избегать косой черты.

2 голосов
/ 10 августа 2009
Firefox\/([0-9]\.[0-9]\.[0-9])

Создайте группу захвата вокруг чисел, как я делал выше с помощью (). Затем нужное регулярное выражение будет во втором индексе в массиве, который возвращается. например, для языков, основанных на нуле, matchedArray [1] и или для языков, основанных на 1, его matchedArray [2]

1 голос
/ 10 августа 2009

Firefox\/([0-9]\.[0-9]\.[0-9])

В зависимости от вашего языка (я предполагаю, что js) это будет второй элемент в массиве

т.е.


var regex = /Firefox\/([0-9]\.[0-9]\.[0-9])/
var matches = useragent.match(regex);
alert(matches[1]); // 3.5.2
1 голос
/ 10 августа 2009
Firefox\/([0-9]\.[0-9]\.[0-9])

и извлеките совпадение # 1, однако это делается в вашем (не указанном, хотя можно подозревать JavaScript) движке регулярных выражений. Или, если это очень раздражает, и ваше регулярное выражение поддерживает lookbehind:

(?<=Firefox\/)[0-9]\.[0-9]\.[0-9]
0 голосов
/ 08 января 2011

Иногда пользовательский агент также содержит символы, например ::10000

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b9pre) Gecko/20101228 Firefox/4.0b9pre

Internet Explorer - единственный браузер, где я видел символы как часть информации о версии:

Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0 ; .NET CLR 2.0.50215; SL Commerce Client v1.0; Tablet PC 2.0

Также могут быть строки пользовательского агента Firefox только с двумя цифрами версий, такими как эта:

Mozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.2a1pre) Gecko/20091127 Firefox/3.5 Maemo Browser 1.5.6 RX-51 N900

Исходя из этого, я придумал этот шаблон регулярных выражений:

Firefox\/([\d]+\.[\w]?\.?[\w]+) 

Он будет соответствовать любому номеру версии с 2-3 уровнями и номерами> 10, но также разрешит символы на 2-м или 3-м уровне.

...