我強烈建議您使用String.replace()的函數形式來解決您的問題,而不是試圖在迭代{0},{1}等的for循環中參數化正則表達式。換句話說,不要尋找「{0}」或「{1}」,只要查找圍繞任意數字的{{[[0-9] +)}'(即{}}並將一個函數傳遞給replace()函數,以基於{}之間的數字智能地替換這些表達式。這使您可以使用RegExp文字,您可以將其寫爲/ {([0-9] +)}/。而不是在字符串轉義字符周圍亂
事情是這樣的:
s='the song says {0} little {1} little {2} little-endians';
args=['zero','one','two'];
new_string = s.replace(/{([0-9]+)}/g, function(wholematch,firstmatch)
{return args[(+firstmatch)]; }
);
這將產生
the song says zero little one little two little-endians
看到這個similar question。
編輯:如果你想離開那個比你args
列表的長度時,單獨的項目,一定要理智檢查參數號:
s='the song says {0} little {1} little {2} little-endians,\n'+
' {3} little {4} little {5} little-endians';
args=['zero','one','two'];
new_string = s.replace(/{([0-9]+)}/g, function(wholematch,firstmatch)
{var i = +firstmatch; return i < args.length ? args[i] : wholematch;}
);
這將產生
the song says zero little one little two little-endians,
{3} little {4} little {5} little-endians
@casperOne,什麼是重複?既沒有[這個問題](http://stackoverflow.com/questions/4029109/javascript-regex-how-to-put-a-variable-inside-a-regular-expression)也沒有[這個問題](http:// stackoverflow.com/questions/494035/how-do-you-pass-a-variable-to-a-regular-expression-javascript)與這個問題是一樣的。這個問題很重要,因爲它實際上顯示了將一個字符串變量混合成正則表達式模式,而其他問題的答案僅提供了逃避字符不成問題的示例。 – MandM 2015-12-04 13:08:18