JavaScriptのreplaceとmatchのパターンの違い
JavaScriptで文字列の置換をするときはreplaceを使います。また文字列の比較をするときはmatchを使います。いずれも引数にパターンを与えますが、使い方がちょっと異なります。
replace
文字列.replace(パターン, 置換後)
パターンに合致した部分を置き換えます。
パターンは正規表現または文字列が使えます。
正規表現
result = base.replace(/./, "x");
alert(result);//xbc.def
パターンを「/正規表現/フラグ」または「new RegExp("正規表現", "フラグ")」で与えます。
フラグに「i」や「g」を使えます。
このサンプルでは正規表現として「.」を使っています。「改行を除く任意の1文字」を表すので、「abc.def」の最初の文字「a」が「x」に置換されて「xbc.def」になります。
文字列
result = base.replace(".", "x");
alert(result);//abcxdef
パターンを文字列で与えます。フラグは使えません。
このサンプルでは文字列「.」が「x」に置換されて「abcxdef」になります。
正規表現の場合と置換結果が異なることに注意する必要があります。
またパターンを文字列で与えた場合、最初の一つしか置換されません。
match
文字列.match(パターン)
パターンに合致すると合致した部分を配列で返します。括弧やフラグによって配列の内容が変わりますが説明は省略します。
パターンは正規表現が使えます。文字列を与えた場合は「new RegExp(文字列)」とするのと同じ「暗黙的な変換」が行われます。
正規表現
result = base.match(/./, "x");
alert(result);
このサンプルでは正規表現として「.」を使っていますので最初の文字「a」が表示されます。厳密には「配列bの0番目の要素「a」が表示される」と言えます。
文字列
result = base.match(".", "x");
alert(result);//
このサンプルでは文字列として「.」を使っていますが、「new RegExp(".")」という変換が行われるので、正規表現を使った場合と同じ結果になります。
[ 2015年7月15日 | カテゴリー: JavaScript | タグ: match , replace , 正規表現 , 違い ]
« 郵便料金一覧 | 群馬と栃木、島根と鳥取、熊本と大分、どっちが西でどっちが東か? »
コメントを残す