LoginSignup
23
25

More than 5 years have passed since last update.

replaceに変数を使ってグローバルマッチさせる2つの方法

Posted at

やりたいこと

index.htmlの全ての「も」を「M」に置換したいとします。

index.html
<p id='test'>すもももももももものうち</p>

問題

置換したい文字列を変数beforeに代入します。変数beforeをreplaceにそのまま入れると、最初の該当箇所しか置換されません。

test1.js
var before = "";
var after = "M";
var txt = $("#test").html();

var replaceText = txt.replace(before,after);
$("#test").html(replaceText);
//出力結果:すMももももももものうち

解決策1

該当箇所全てを置換するにはRegExp オブジェクトにグローバルマッチのフラグ (g)をつけます。

test2.js
var replaceText = txt.replace(new RegExp(before,"g"),after);
//出力結果:すMMMMMMMMのうち

解決策2

変数beforeに最初からフラグをつけておきます。

test3.js
var before = /も/g;
var after = "M";
var txt = $("#test").html();

var replaceText = txt.replace(before,after);
$("#test").html(replaceText);
//出力結果:すMMMMMMMMのうち

・参考ページ
String.replace - JavaScript | MDN(https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace)

23
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
25