IEで動作していた古いスクリプトがありますが、IE10でのみ動作しない理由がわかりません。誰かがそれについて何らかの手がかりを持っていますか?
String.Format = function (a) {
var b = Array.prototype.slice.call(arguments, 1);
return a.replace(/{(\d+)}/g, function () { return b[RegExp.$1] });
};
IEで動作していた古いスクリプトがありますが、IE10でのみ動作しない理由がわかりません。誰かがそれについて何らかの手がかりを持っていますか?
String.Format = function (a) {
var b = Array.prototype.slice.call(arguments, 1);
return a.replace(/{(\d+)}/g, function () { return b[RegExp.$1] });
};
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];
});
これらのプロパティは非推奨です。ここを参照してください:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_Properties 。