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

use*_*333 17 user-agent android version

我一直试图找到一个解析器或正则表达式,它将从用户代理字符串给我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
Run Code Online (Sandbox Code Playgroud)

将返回:

2.2.1
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

fea*_*age 24

这个正则表达式比mathepic的答案更具"未来证据" :

Android (\d+(?:\.\d+)+);
Run Code Online (Sandbox Code Playgroud)

它允许每个位置的多个数字以及版本号中的其他句点.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});
Run Code Online (Sandbox Code Playgroud)

这更贴近我们已经看过的模式,但可能会错过他们决定.1在版本末尾添加额外版本的某些版本.它也适用于未来10.0.0版本.


alt*_*ive 1

正则表达式应该可以工作,沿着未经测试的路线

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

然后使用您使用的任何正则表达式函数将该部分放在括号内。