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>"; });