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.
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.
If you want to use it with User-Agent it might be safe but else you shouldn't use it.
Android ((\d+|\.)+[^,;]+)
It catches everything after Android it works with,
1.6 2.4.4 10.12.5
To test with Live Regex: https://www.phpliveregex.com/p/uPw
May I present an answer that others can easily copy and paste.
navigator.userAgent.match(/Android [\d+\.]{3,5}/)[0].replace('Android ','')
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)
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:
This could be written a little more strictly as:
Android (\d+(?:\.\d+){0,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.