2

我有一个旧脚本,它曾经与 IE 一起使用,但我不知道为什么它不能仅与 IE10 一起使用,有人对此有所了解吗?

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

2 回答 2

4

根据MDN,这些RegExp.$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];
});

资源

工作示例

于 2013-01-02T18:18:56.880 回答
1

这些属性已被弃用。请参阅此处:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_Properties 。

于 2013-01-02T18:18:31.853 回答