JavaScriptのreplaceとmatchのパターンの違い

Pocket

JavaScriptで文字列の置換をするときはreplaceを使います。また文字列の比較をするときはmatchを使います。いずれも引数にパターンを与えますが、使い方がちょっと異なります。

replace

文字列.replace(パターン, 置換後)

パターンに合致した部分を置き換えます。
パターンは正規表現または文字列が使えます。

正規表現

base = "abc.def";
result = base.replace(/./, "x");
alert(result);//xbc.def

パターンを「/正規表現/フラグ」または「new RegExp("正規表現", "フラグ")」で与えます。
フラグに「i」や「g」を使えます。
このサンプルでは正規表現として「.」を使っています。「改行を除く任意の1文字」を表すので、「abc.def」の最初の文字「a」が「x」に置換されて「xbc.def」になります。

文字列

base = "abc.def";
result = base.replace(".", "x");
alert(result);//abcxdef

パターンを文字列で与えます。フラグは使えません。
このサンプルでは文字列「.」が「x」に置換されて「abcxdef」になります。
正規表現の場合と置換結果が異なることに注意する必要があります。
またパターンを文字列で与えた場合、最初の一つしか置換されません。

match

文字列.match(パターン)

パターンに合致すると合致した部分を配列で返します。括弧やフラグによって配列の内容が変わりますが説明は省略します。
パターンは正規表現が使えます。文字列を与えた場合は「new RegExp(文字列)」とするのと同じ「暗黙的な変換」が行われます。

正規表現

base = "abc.def";
result = base.match(/./, "x");
alert(result);

このサンプルでは正規表現として「.」を使っていますので最初の文字「a」が表示されます。厳密には「配列bの0番目の要素「a」が表示される」と言えます。

文字列

base = "abc.def";
result = base.match(".", "x");
alert(result);//

このサンプルでは文字列として「.」を使っていますが、「new RegExp(".")」という変換が行われるので、正規表現を使った場合と同じ結果になります。

[ 2015年7月15日 | カテゴリー: JavaScript | タグ: , , , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報