2013-06-12 20 views
6

JavaScriptのシンプルなテンプレート機能をコーディングしています。JavaScript REGEXにすべてマッチして置き換えます。

プレースホルダにコンテンツを解析する必要があるときに、テンプレート読み込みがうまくできました。

テンプレートの例は次のとおりです。

{{name}} is {{age}} 

例えば、これらは動的であるので、理想的に私は自分の名前に基づいてプレースホルダに合わせて交換する正規表現を使用したいです

{{name}}は、JavaScript配列に読み込まれたコンテンツに置き換えられます(例:

data.name 

data.age 

これは私の正規表現です:/\{\{(.*?)\}\}/

これは正常に動作しているが、検索の多くの後、私はすべての正規表現の一致を反復処理の定義された方法を見つけることができません。事前に

おかげ

+1

[これはあなたが作成しようとしているものです] – Marty

+0

類似していますが、正確ではありません。 –

答えて

17

さて、まずあなたが正規表現にgフラグが必要になります。これは、すべての値を置き換えるようにJavaScriptに指示します。また、replaceメソッドに関数を渡すこともできます。このようなもの:

var result = str.replace(/\{\{(.*?)\}\}/g, function(match, token) { 
    return data[token]; 
}); 

第2パラメータは最初のサブグループに一致します。以下同様です。

+1

+1 ...関数にあなたのコードをラップし、複数のレベルのオブジェクトを評価するためにevalを使用... http://jsfiddle.net/hU7e2/同様に任意のコードを実行することができます。だから慎重に:) http://jsfiddle.net/hU7e2/1/ – Shanimal

4
var data = { 
    name: 'zerkms', 
    age: 42 
}; 

var str = '{{name}} is {{age}}'.replace(/\{\{(.*?)\}\}/g, function(i, match) { 
    return data[match]; 
}); 

console.log(str); 

http://jsfiddle.net/zDJLd/

関連する問題