Get Android OS version from user-agent

ⅰ亾dé卋堺 提交于 2019-11-27 01:08:08

问题


I've been trying to find a parser or regex that will give me the Android OS version from a user agent string.

E.g.

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

Will return:

2.2.1

Can anyone help?


回答1:


This regular expression is a bit more "future proof" than mathepic's answer:

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

It allows for multiple digits in each place as well as additional periods in the version number. Android's been out 3 years and we're on 3.0. Eventually we'll get to 10.0.0.

This will catch all of the following:

  • 1.6 (real)
  • 2.3.4 (real)
  • 12.34.56 (fake. but one day...)
  • 3.4.5.6 and 4.5.6.7.8.9 (fake... but just in case)

This could be written a little more strictly as:

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

This sticks more closely to the schema we've already seen used, but could potentially miss some versions of they decide to add an additional .1 at the end of a version. It also matches for the future 10.0.0 version.




回答2:


May I present an answer that others can easily copy and paste.

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



回答3:


Motorola's player user agents can have the following:

Linux;Android ; Release/4.1.2

So, I've had to start using the the following:

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



回答4:


Regex should work, something along the untested lines of

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

And then use whatever regex function you use to get that part inside the parens.



来源:https://stackoverflow.com/questions/5293394/get-android-os-version-from-user-agent

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!