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で、2番目のグループはIOSバージョンです(バージョン番号が存在しないIOS 1を除く)

使用されているコーパスには、一部のユーザーエージェントが欠落している可能性がありますが、ここでそれをいじることができます。

http://refiddle.com/5x9

于 2012-09-19T08:38:46.163 に答える