[javascript] 正規表現で文字列の検索や置換を行うメソッド

2017年8月16日(更新: 2017年8月20日)

javascriptで、文字列を正規表現を用いて操作する方法についてです。

今回は、javascriptの文字列が持つ、正規表現を使える以下のメソッドの動作について紹介します。

javascript で正規表現を作成する方法は2通りがありますが、この記事では以下のような、はじめに定義した正規表現を途中で変更しない場合の定義方法を用いています。

var regexp = /\([^\)]*\)/;

左右をスラッシュで囲むことで、正規表現オブジェクトとなります。別の定義方法の詳細については、以下のサイトを御覧ください。

正規表現 – JavaScript | MDN

マッチした文字列を得る match

あるパターンに一致する部分文字列だけを抽出したい場合はメソッド match を使用します。

例えば、以下のような文章に含まれる、半角括弧に囲まれた部分の文字列だけを抽出することを考えてみます。

このような(ごく普通の)文字列があります。括弧(カッコ)の部分を抽出します。

この文字列から、括弧で囲まれている部分を取り出す javascript は以下のようになります。

var regexp = /\([^\)]*\)/g;
var test = "このような(ごく普通の)文字列があります。括弧(カッコ)の部分を抽出します。".match(regexp);
console.log(test);

マッチした文字列は戻り値として配列に格納されて返されます。上記のスクリプトをブラウザで実行した結果は以下のようになります。

javascriptの正規表現をmatchメソッドで使用した例

括弧で囲まれた部分が配列に格納されていることが確認できます。

ちなみに、括弧を抽出する正規表現は以下のようにも書けます。

var regexp = /\(.*?\)/;

詳細は以下の記事を御覧ください。

括弧で括られた部分だけを正規表現で抽出する – 最短マッチの正規表現

マッチした文字列を別の文字列に置き換える replace

パターンに一致した文字列を別の文字列に変更するにはメソッド replace を使用します。

先ほど match を使ったときと同じ文字列から、括弧で囲まれている部分を別の文字列に帰るスクリプトは以下のようになります。第二引数に置換後の文字列を指定します。

var regexp = /\([^\)]*\)/g;
var test = "このような(ごく普通の)文字列があります。括弧(カッコ)の部分を抽出します。".replace(regexp, "[置換された!]");
console.log(test);

ブラウザでの実行結果は以下のようになります。

javascriptの正規表現をreplaceメソッドで使用して文字列を置換した例

以下のように、第二引数(置換後の文字列)を空文字にすると、第一引数の正規表現にマッチした部分の文字列を元の文字列から削除することができます。

var regexp = /\([^\)]*\)/g;
var test = "このような(ごく普通の)文字列があります。括弧(カッコ)の部分を抽出します。".replace(regexp, "");
console.log(test);

実行結果は以下のようになります。

replaceメソッドでパターンに一致した文字列を削除する例

マッチした文字列で別の文字列を分割する split

パターンに一致した文字列で、元の文字列を前後に分ける場合はメソッド split を使用します。

例えば、半角括弧開き または 半角括弧閉じ で文字列を分割する場合は、以下のようになります。

var regexp = /(|)/g;
var test = "このような(ごく普通の)文字列があります。括弧(カッコ)の部分を抽出します。".split(regexp);
console.log(test);

結果は以下のようになります。文字列が分割され、別れた文字列が配列の要素として格納され戻り値となります。

splitメソッドで文字列を分割して配列に格納した例

おしまい

以上、javascript で正規表現を使用する3つのメソッドについてでした。正規表現を使用することで、柔軟な文字列操作を行うことができます。

コメントを残す

メールアドレスが公開されることはありません。