1

私は、Javascriptを使用してデータベースから出力されるデータをテンプレートとして「口ひげを生やしている」ことを行っています。データは次のようになります。

{{Figure 1-1}}、および{{Figures 1-2}}と{{1-3}}でわかるように、hozzfrazzはフーブルスティックよりもはるかにきれいです。

私の正規表現はです\{\{[-a-zA-Z0-9\s]+\}\}/gi。これは、私の考えでは、上記のすべての口ひげをキャプチャします。しかし、私の関数で認識されているのは{{1-3}}、他の2つではなく1つだけです。

何か助けはありますか?

どうやら、正規表現が機能するので、関数も追加する必要があります。

var mReg = new RegExp("\{\{[-a-zA-Z0-9\s]+\}\}");
var link_tpl = "<a href='#' rel='@$' class='questionImageLink'>@@</a>";
var html = ''; 
var i = 1;
while (mReg.test(mText) === true) {
    mText = mText.replace(mReg, function (f) {
        var inner = f.substr(2, f.indexOf("}") - 2);
        return link_tpl.replace("@@", inner).replace("@$", i);
    }, "g");
    i++;
}
4

1 に答える 1

3

混乱replaceの代わりに、より寛容な正規表現を使用して、このようにします。while

var re = /\{\{([^{}]+)\}\}/g;
var results = [];

str.replace( re, function(a, b) { results.push(b); });

console.log(results); //=> ['Figure 1-1', 'Figures 1-2', '1-3']

デモ: http: //jsfiddle.net/elclanrs/fE3U3/

于 2012-11-06T02:34:49.833 に答える