正規表現の配列があり、現時点では長さが 1 つの要素と、配列をループして検索/置換したい文字列があります。
var str = "i am*happy all the*time",
rex = [
/(\S)\s*\*\s*(\S)/g
],
i = 0,
r = rex.length;
これは私が現時点でこれを達成しようとしている方法です:
for (i; i < r; i += 1) {
str.replace(rex[i], function(star, p1, p2) {
console.log(i, star, p1, p2);
return p1 + '\\s*(.*)\\s*' + p2;
});
}
結果は になりますi am*\\s*(.*)\\s*happy all the\\s*(.*)\\s*time
。str
しかし、コンソールを確認すると、関連する一致が行われていますが、現時点では影響を受けていないようです。これは、ここで確認できます。
だから私は単純なものを見逃していますか、String.replace() でラムダ式を使用することについて何か誤解していますか、それとももっと根本的に間違っていることがありますか?
...
追加情報: 興味がある場合に備えて、現在 Chrome 24 を使用しています。少し前に、String.replace() の匿名関数がすべてのブラウザーで使用できるわけではないことを読みましたが、今では解決されると思いました (このオプションは ECMAScript v3 で導入されました)。