2

我正在尝试找到一个从所有 iOS 设备获取 iOS 版本的正则表达式。我不能为每种设备类型(iphone、ipad、ipod)单独做一个,我需要一个通用的。

在进行比赛之前,我会检查它是否是有效的 iOS 设备。我想出的解决方案是:

Match match = Regex.Match(HttpContext.Current.Request.UserAgent, @"(?<version>\d+(_\d+)+) like Mac OS X");
string versionNr = match.Groups["version"].ToString().Replace("_", ".");

我检查了很多设备代理字符串,到目前为止它们都匹配。但我有点担心它不会匹配所有,只是检查是否有人有更好的正则表达式。

提前致谢。

4

1 回答 1

1

正如其他答案中提到的,正则表达式对于测试用户代理字符串不是 100% 可靠的,但要回答这个问题如何:

(i[PSa-z\s]+);.*?CPU\s([OSPa-z\s]+(?:([\d_]+)|;))

第一个匹配组是 iPhone/pad/pod 类型,第二组是 IOS 版本(IOS 1 除外,没有版本号)

使用的语料库可能缺少一些用户代理,但你可以在这里摆弄它:

http://refiddle.com/5x9

于 2012-09-19T08:38:46.163 回答