从用户代理获取Android操作系统版本

时间:2011-03-14 00:00:09

标签: android version user-agent

我一直在尝试找到一个解析器或正则表达式,它会从用户代理字符串中为我提供Android操作系统版本。

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

将返回:

2.2.1

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:23)

这个正则表达式比mathepic's answer更具“未来证据”:

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

它允许每个地方有多个数字以及版本号中的其他句号。 Android已经用了3年,而我们用的是3.0。最终我们将达到10.0.0。

这将抓住以下所有内容:

  • 1.6(真实)
  • 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版本。

答案 1 :(得分:2)

摩托罗拉的玩家用户代理可以拥有以下内容:

Linux;Android ; Release/4.1.2

所以,我必须开始使用以下内容:

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

答案 2 :(得分:1)

正则表达式应该可行,这是未经测试的

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

然后使用你使用的任何正则表达式函数将该部分放入parens中。

答案 3 :(得分:1)

我可以提供一个其他人可以轻松复制和粘贴的答案。

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

答案 4 :(得分:0)

如果您想将其与User-Agent一起使用,可能是安全的,但否则您不应该使用它。

Android ((\d+|\.)+[^,;]+)

它可以在Android兼容后捕获所有内容,

1.6 2.4.4 10.12.5

要使用Live Regex进行测试:https://www.phpliveregex.com/p/uPw