Подтвердить что ты не робот

Получите версию ОС Android от пользователя-агента

Я пытаюсь найти парсер или регулярное выражение, которое даст мне версию ОС Android из строки пользовательского агента.

например.

Mozilla/5.0 (Linux; U; Android 2.2.1; fr-fr; Desire HD Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Вернется:

2.2.1

Может ли кто-нибудь помочь?

4b9b3361

Ответ 1

Это регулярное выражение является немного более "будущим доказательством", чем mathepic answer:

Android (\d+(?:\.\d+)+);

Он позволяет использовать несколько цифр в каждом месте, а также дополнительные периоды в номере версии. Android вышел 3 года, и мы на 3.0. В конце концов мы доберемся до 10.0.0.

Это приведет к следующему:

  • 1.6 (real)
  • 2.3.4 (реальный)
  • 12.34.56 (подделка, но один день...)
  • 3.4.5.6 и 4.5.6.7.8.9 (подделка... но на всякий случай)

Это можно было бы написать немного более строго:

Android (\d+(?:\.\d+){1,2});

Это более близко относится к схеме, которую мы уже видели, но, возможно, может пропустить некоторые версии, они решили добавить дополнительный .1 в конце версии. Он также соответствует будущей версии 10.0.0.

Ответ 2

Пользовательские агенты пользователя Motorola могут иметь следующее:

Linux;Android ; Release/4.1.2

Итак, мне пришлось начать использовать следующее:

[a|A]ndroid[^\d]*([\d[_|.]]+\d)

Ответ 3

Regex должен работать, что-то вдоль непроверенных строк

Android ([0-9]\.[0-9](\.[0-9])?);

И затем используйте любую функцию регулярных выражений, которую вы используете, чтобы получить эту часть внутри парнеров.

Ответ 4

Могу ли я представить ответ, который другие могут легко скопировать и вставить.

navigator.userAgent.match(/Android [\d+\.]{3,5}/)[0].replace('Android ','')