Вопрос

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

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.

Это было полезно?

Решение

(?<=Firefox/)\d+(?:\.\d+)+

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

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

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

Другие советы

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

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

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

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

(?<=Firefox\/)[0-9]\.[0-9]\.[0-9]

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

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

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-го уровня.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top