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 に答える