jQueryでreplaceを使って複数箇所の複数の文字列を一括置換する方法

jQueryでreplaceを使って、HTMLページ内の文字列を別の文字列に置き換えることができます。

CMS等のプログラム中で定義されている文字列を別の文字列に置き換えたいときや、たくさんの文字修正があったときなどに便利です。

基本的な使い方から段階をふんで、最終的に「複数箇所の複数の文字列を一括置換する」という動作になるようにしてみようと思います。途中の解説が不要な方は、ページの下までワープしてください。

一つの要素内の該当する文字列を一箇所だけ置換

一つの要素内の、最初にマッチした文字列を一箇所だけを指定した文字列に置き換えます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<p id="replace">私はみかんが好きだ。みかんなしでは生きられない。</p>
<p id="replace">私はみかんが好きだ。みかんなしでは生きられない。</p>
<p id="replace">私はみかんが好きだ。みかんなしでは生きられない。</p>
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$(function(){
var txt = $('#replace').html();
$('#replace').html(
txt.replace('みかん','猫')
);
});
$(function(){ var txt = $('#replace').html(); $('#replace').html( txt.replace('みかん','猫') ); });
$(function(){
	var txt = $('#replace').html();
	$('#replace').html(
		txt.replace('みかん','猫')
	);
});
私はが好きだ。みかんなしでは生きられない。

一つの要素内の該当する文字列をすべて置換

一つの要素内の、マッチした文字列が複数箇所あった場合、全部を指定した文字列に置き換えます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<p id="replace">私はみかんが好きだ。みかんなしでは生きられない。</p>
<p id="replace">私はみかんが好きだ。みかんなしでは生きられない。</p>
<p id="replace">私はみかんが好きだ。みかんなしでは生きられない。</p>
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$(function(){
var txt = $('#replace').html();
$('#replace').html(
txt.replace(/みかん/g,'猫')
);
});
$(function(){ var txt = $('#replace').html(); $('#replace').html( txt.replace(/みかん/g,'猫') ); });
$(function(){
	var txt = $('#replace').html();
	$('#replace').html(
		txt.replace(/みかん/g,'猫')
	);
});
私はが好きだ。なしでは生きられない。

複数の要素内の該当する文字列をすべて置換

複数の要素にわたって置き換えしたい場合は以下のように「each」を使います。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<p class="replace">私はみかんが好きだ。みかんなしでは生きられない。</p>
<p class="replace">なんでみかんが好きなんだろう。</p>
<p class="replace">私の前世はみかんだったのかもしれない。</p>
<p class="replace">私はみかんが好きだ。みかんなしでは生きられない。</p> <p class="replace">なんでみかんが好きなんだろう。</p> <p class="replace">私の前世はみかんだったのかもしれない。</p>
<p class="replace">私はみかんが好きだ。みかんなしでは生きられない。</p>
<p class="replace">なんでみかんが好きなんだろう。</p>
<p class="replace">私の前世はみかんだったのかもしれない。</p>
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$(function(){
$('.replace').each(function(){
var txt = $(this).html();
$(this).html(
txt.replace(/みかん/g,'猫')
);
});
});
$(function(){ $('.replace').each(function(){ var txt = $(this).html(); $(this).html( txt.replace(/みかん/g,'猫') ); }); });
$(function(){
	$('.replace').each(function(){
		var txt = $(this).html();
		$(this).html(
			txt.replace(/みかん/g,'猫')
		);
	});
});
私はが好きだ。なしでは生きられない。
なんでが好きなんだろう。
私の前世はだったのかもしれない。

メソッドチェーンで複数の文字列を一括置換

「replace」をメソッドチェーンにすると、複数文字列の置換が可能になります。「.」でつないでいくだけです。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<p class="replace">私はみかんとりんごとぶどうが好きだ。</p>
<p class="replace">なんでみかんとりんごとぶどうが好きなんだろう。</p>
<p class="replace">私の前世はみかんかりんごかぶどうだったのかもしれない。</p>
<p class="replace">私はみかんとりんごとぶどうが好きだ。</p> <p class="replace">なんでみかんとりんごとぶどうが好きなんだろう。</p> <p class="replace">私の前世はみかんかりんごかぶどうだったのかもしれない。</p>
<p class="replace">私はみかんとりんごとぶどうが好きだ。</p>
<p class="replace">なんでみかんとりんごとぶどうが好きなんだろう。</p>
<p class="replace">私の前世はみかんかりんごかぶどうだったのかもしれない。</p>
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$(function(){
$('.replace').each(function(){
var txt = $(this).html();
$(this).html(
txt.replace(/みかん/g,'猫')
.replace(/りんご/g,'犬')
.replace(/ぶどう/g,'猿')
);
});
});
$(function(){ $('.replace').each(function(){ var txt = $(this).html(); $(this).html( txt.replace(/みかん/g,'猫') .replace(/りんご/g,'犬') .replace(/ぶどう/g,'猿') ); }); });
$(function(){
	$('.replace').each(function(){
		var txt = $(this).html();
		$(this).html(
			txt.replace(/みかん/g,'猫')
			   .replace(/りんご/g,'犬')
			   .replace(/ぶどう/g,'猿')
		);
	});
});
私はが好きだ。
なんでが好きなんだろう。
私の前世はだったのかもしれない。

配列とfor文で複数の文字列を一括置換

置換したい文字がたくさんあるときは、配列for文を使うとコードが少しすっきりします。もちろんメソッドチェーンを使っても問題ありませんが。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$(function(){
var arr1 = [
/みかん/g,
/りんご/g,
/ぶどう/g
];
var arr2 = [
"猫",
"犬",
"猿"
];
$('.replace').each(function(){
for(var i=0, len=arr1.length; i<len; i++){
var txt = $(this).html();
$(this).html(
txt.replace(arr1[i],arr2[i])
);
}
});
});
$(function(){ var arr1 = [ /みかん/g, /りんご/g, /ぶどう/g ]; var arr2 = [ "猫", "犬", "猿" ]; $('.replace').each(function(){ for(var i=0, len=arr1.length; i<len; i++){ var txt = $(this).html(); $(this).html( txt.replace(arr1[i],arr2[i]) ); } }); });
$(function(){
	var arr1 = [
		/みかん/g,
		/りんご/g,
		/ぶどう/g
	];
	var arr2 = [
		"猫",
		"犬",
		"猿"
	];
	$('.replace').each(function(){
		for(var i=0, len=arr1.length; i<len; i++){
			var txt = $(this).html();
			$(this).html(
				txt.replace(arr1[i],arr2[i])
			);
		}
	});
});

連想配列と$.eachで複数の文字列を一括置換

ちょっと無理やりな感はありますが、オブジェクト$.each関数を使っても同じような事ができます。

keyに「//g」は使えませんので、keyとvalueを入れ替えてみました。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$(function(){
var arr = {
"猫" : /みかん/g,
"犬" : /りんご/g,
"猿" : /ぶどう/g
};
var elm = $('.replace');
elm.each(function(i){
$.each(arr,function(key,value){
var txt = elm.eq(i).html();
elm.eq(i).html(
txt.replace(value,key)
);
});
});
});
$(function(){ var arr = { "猫" : /みかん/g, "犬" : /りんご/g, "猿" : /ぶどう/g }; var elm = $('.replace'); elm.each(function(i){ $.each(arr,function(key,value){ var txt = elm.eq(i).html(); elm.eq(i).html( txt.replace(value,key) ); }); }); });
$(function(){
	var arr = {
		"猫" : /みかん/g,
		"犬" : /りんご/g,
		"猿" : /ぶどう/g
	};

	var elm = $('.replace');

	elm.each(function(i){
		$.each(arr,function(key,value){
			var txt = elm.eq(i).html();
			elm.eq(i).html(
				txt.replace(value,key)
			);
		});
	});
});
最終更新日:2017/08/05