Get Android OS version from user-agent

人走茶凉 提交于 2019-11-28 05:58:57
fearphage

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.

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)

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.

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

navigator.userAgent.match(/Android [\d+\.]{3,5}/)[0].replace('Android ','')
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!