>> JavaScript入門トップに戻る

正規表現【replace関数】

今回は正規表現が使える非常に便利なreplace関数について説明します。
使うときは、

文字列変数.replace(正規表現,変換文字列);

のようにして使います。
つまり正規表現にマッチしたものを、変換文字列に置き換えて戻り値として返してくれるわけです。
下のコードを見てください。

function CheckTest3()
{
	str="あいうえお12345ABCDE6789";
	
	var temp=str.replace(/[^A-Z]+([A-Z]+)\d+/g,"アルファベットだけ抜き出しました→$1");
	
	alert(temp);
}


↑押してみてください。
「アルファベットだけ抜き出しました→ABCDE」と表示されたと思います。
replace関数の第一引数を見てください。
正規表現の詳しい説明は省きますが、
アルファベットの部分だけ()でグループ化しています。
replace関数ではこのグループ化した部分を、第二引数で「$数字」で表すことが出来ます。
グループ化が二つあれば、$1、$2、と増えていくだけです。
今回は、"アルファベットだけ抜き出しました→$1"と書くと、
$1の部分が「ABCDE」に置き換わり、戻り値として返してくれるわけです。
一回の処理でこれだけのことが出来るのは非常に便利ですよね?

さらに、replace関数の第二引数には関数を渡すことも可能です。

function CheckTest4(){
	str="あいうえお12345ABCDE6789";
	
	var temp=str.replace(/[^A-Z]+([A-Z]+)\d+/g,Parse);
	
	alert(temp);
}

function Parse(a,b){
	
	return b+"だけ抜き出しました。";
	
}


↑押してみてください。「ABCDEだけ抜き出しました。」と表示されましたよね?
replace関数の第二引数にはParse関数を渡しています。
これでマッチした内容がParse関数に渡されて自由に処理することが可能になります。
この時、Parse関数の第一引数はreplace関数でマッチした全体を指します。
第二引数は、replace関数でグループ化したものを指します。
つまり今回の場合だと、
aには、マッチした全体【あいうえお12345ABCDE6789】が入っていて、
bには、グループ化した【ABCDE】が入っているというわけです。

そして、関数で処理したものをreturnで返します。
こうすることで、temp変数にその結果が代入される、という流れになっています。
今回は「だけ抜き出しました」という文字列しかくっつけてませんが。

理解できましたでしょうか?
複雑な処理は関数を使ったほうが便利なので是非活用しましょう。


>> JavaScript入門トップに戻る