文字列のマッチ、検索、置換

Stringオブジェクトでは、match, search ,replace メソッドで、 文字列や正規表現オブジェクトを指定します。
以下で、正規表現オブジェクトのリテラル表現(/と/で囲む表現)を使う例を中心に紹介します。
この場合、ダブルクォーテンションで囲む必要はありません。 /正規表現/type の表現です。
(typeでは、g i m の文字が使えます。gはグローバルマッチ、iは大文字/小文字無視、mは複数行指定)
例の選択⇒

マッチ、検索

Stringオブジェクトが正規化文字列とマッチするかを調べるmatchメソッドでは、 正規化文字列と比較して合っていれ場合、適合した部分文字列を返します。(マッチしないとnull) IE11において、戻り値をtypeofで確認すると、object の種類ですが、マッチした文字列の配列が返されます。
("abcaba".match(/a/g).length は aの文字が箇所でマッチするので、3が得られます。)

Stringオブジェクトが正規化文字列とマッチ位置を検索するsearchメソッドでは、 正規化文字列と比較して合っている場合、適合した部分文字列の位置を返します。
以下で確認できます。なお、下の実験の正規表現は、/で囲まないでください。

Stringオブジェクトの文字列⇒

検索用文字列
(右修飾子追加 type=)⇒

matchメソッド結果⇒

searchメソッド⇒


iの修飾子を指定すると大文字と小文字を区別しません。 gの修飾子を指定はマッチするもの全てで、置換する場合に複数の置き換えが可能になります。 mの修飾子を指定は、複数行に対する検索を意味します。

置換

Stringオブジェクトが正規化文字列とマッチした時、マッチ部分を 指定の文字列に置き換えます。
以下で確認できます。

Stringオブジェクトの文字列⇒

検索用文字列
(正規化 type=)⇒

置き換え文字列⇒
実行結果⇒

よく使いそうな置き換え例を紹介します。
txt の文字列の前後の空白を削除する表現を以下に示します。
var s = txt.replace(/^\s+|\s+$/g, "");

txt の文字列で、複数の空白が並ぶ範囲を一つのスペースにする表現を以下に示します。
var s = txt.replace(/\s+/g, " ");

txt の文字列で、コンマ前後存在する任意数空白を削除する表現を以下に示します。
var s = txt.replace(/\s*,\s*/g, ",");