JavaScript の replace 関数は、正規表現が使え、コールバック関数まで使えるという非常に便利なものです。でも、たまに使うときは使い方を忘れてしまうんです。

を見て動作を確認。

Android の UserAgent から Android のバージョンと端末名を取得するのは、以下のように書いてみました。

    var ua = navigator.userAgent;
    // 例えば au の IS01 の場合
    ua = 'Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; IS01 Build/S6191) AppleWebKit..';
    var android_ver, dev_name;
    ua.replace(/Android (.*);.*;\s*(.*)\sBuild/, function(ma, m1, m2) {
        android_ver = m1;
        dev_name    = m2;
    });
    alert(android_ver + "," + dev_name); // 1.6,IS01 が得られる

ちなみに、正攻法だと以下ですね。replace() 使うよりは、こっちのほうがシンプル。

    var ua = navigator.userAgent;
    // 例えば
    ua = 'Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; IS01 Build/S6191) AppleWebKit..';
    var regex = /Android (.*);.*;\s*(.*)\sBuild/;
    var match = regex.exec(ua);
    var android_ver = match[1];
    var dev_name = match[2];
    alert(android_ver + "," + dev_name); // 1.6,IS01 が得られる

(補足で) replace()の第一引数に、RegExpオブジェクトを指定することで、特定キーワードをすべてコールバックで置換できます。

var keyword = "test";
var key_re = new RegExp(keyword,"g");
var str = "test test test";
str = str.replace(key_re, function(s) { return "<b>" + s + "</b>"; });