Получите версию ОС 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
Может ли кто-нибудь помочь?
Ответы
Ответ 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 ','')