// mozIStorageFunctionインターフェイスを備えたオブジェクトを定義 var matchingFunction = { onFunctionCall : function(aArgs) { // 渡ってくるのはmozIStorageValueArrayのオブジェクト var data = aArgs.getString(0); var pattern = aArgs.getString(1); return data.match(new RegExp(pattern, 'i')) ? true : false ; } }; // 上記オブジェクトをSQL文で利用できる関数として登録 dbConnection.createFunction('match', 2, matchingFunction); // なお、引数の個数を「-1」にすると可変長引数の関数になる var statement = dbConnection.createStatement(.toString()); try { statement.bindStringParameter(0, '^\\w+://[^/]+\\.?mozilla\\.(com|org|jp)/'); var bookmarks = []; while(statement.executeStep()) { bookmarks.push({ title : statement.getString(0), uri : statement.getString(1) }); } alert(bookmarks.map(function(aBookmark) { return aBookmark.title+'\n '+aBookmark.uri; }).join('\n')); } finally { statement.reset(); }