为什么$ 1 ... $ 9属性(RegEx)不适用于IE10?

时间:2013-01-02 18:11:39

标签: javascript regex internet-explorer-10

我有一个旧脚本,它曾用于IE,但我不知道为什么它只能用于IE10,任何人都有一些线索吗?

String.Format = function (a) {
    var b = Array.prototype.slice.call(arguments, 1);
    return a.replace(/{(\d+)}/g, function () { return b[RegExp.$1] });
};

2 个答案:

答案 0 :(得分:4)

根据MDNRegExp.$n属性已弃用。

请改为尝试:

return a.replace(/{(\d+)}/g, function (match) { 
    // match will include the {} so we strip all non-digits
    return b[match.replace(/\D/g, '')];
});

或者使用第一个带括号的匹配来避免额外的replace调用:

return a.replace(/{(\d+)}/g, function (match, p1) { 
    return b[p1];
});

Source

Working example

答案 1 :(得分:1)