1

我正在使用来自带有 Javascript 的数据库的数据进行“小胡子灯”模板化。数据如下所示:

正如您在 {{Figure 1-1}} 以及在 {{Figures 1-2}} 和 {{1-3}} 中看到的,hozzfrazz 比 hooble stick 干净得多。

我的正则表达式是\{\{[-a-zA-Z0-9\s]+\}\}/gi,在我看来,它捕获了上述所有的胡须。但是在我的功能中唯一被识别的是{{1-3}},而不是其他两个。

有什么帮助吗?

显然我还需要添加我的函数,因为正则表达式有效:

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 回答