このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

JavaScript: 文字列のreplaceメソッドの第3引数

次のJavaScript断片を実行すると:

var s = "私が塾長である。私が江田島平八である。"; alert(s.replace("私","ワシ"))

「ワシが塾長である。私が江田島平八である。」と表示されます。二箇所の「私」を「ワシ」に置き換えるには、g(global)オプションが必要です。Firefoxだと次のように書けます。

var s = "私が塾長である。私が江田島平八である。"; alert(s.replace("私","ワシ", 'g'))

表示は「ワシが塾長である。ワシが江田島平八である。」となります。

ところが、Chromeで同じことをしても、replaceの第3引数 'g' は効かないのです。表示が変わりません。replaceメソッドの第3引数ではなくて、正規表現のオプションとして指定する必要があります。

var s = "私が塾長である。私が江田島平八である。"; alert(s.replace(new RegExp('私', 'g'), "ワシ"))

new RegExp('私', 'g') というオブジェクト生成式の代わりに正規表現リテラルを書いても大丈夫なようです。

var s = "私が塾長である。私が江田島平八である。"; alert(s.replace(/私/g, "ワシ"))

みなさんがお使いのブラウザではどうでしょうか?