JavascriptでUser AgentからiOSのバージョン番号を判別する方法

iOS10がリリースされましたね。

User AgentからiOSのバージョンを取得する方法ですが、バージョン番号は以下のような形式になっているようです。

iOS10.0

Mozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A345 Safari/602.1

iOS10.0.2

Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A456 Safari/602.1

10_0 の2桁の場合と 10_0_2のように3桁の場合があるようです。過去の iOS9.3 とかもそんな感じです。そういうルールみたいです。

以下のようにするとバージョンが取得できます。(3桁で取得できなかったら2桁で取得する)

aipo.userAgent={
    __userAgent:window.navigator.userAgent.toLowerCase(),
    iphoneVersion:function(){
        var version = this.__userAgent.match(/iphone os ([\d]+)_([\d]+)_([\d]+)/);
        if(!version){
            version = this.__userAgent.match(/iphone os ([\d]+)_([\d]+)/);
        }
        return version;
    }
}