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オブジェクトの文字列⇒ | |
検索用文字列 |
|
matchメソッド結果⇒ | |
searchメソッド⇒ |
iの修飾子を指定すると大文字と小文字を区別しません。
gの修飾子を指定はマッチするもの全てで、置換する場合に複数の置き換えが可能になります。
mの修飾子を指定は、複数行に対する検索を意味します。
Stringオブジェクトが正規化文字列とマッチした時、マッチ部分を
指定の文字列に置き換えます。
以下で確認できます。
Stringオブジェクトの文字列⇒ | |
検索用文字列 |
|
置き換え文字列⇒ | |
実行結果⇒ |
よく使いそうな置き換え例を紹介します。
txt の文字列の前後の空白を削除する表現を以下に示します。
var s = txt.replace(/^\s+|\s+$/g, "");
txt の文字列で、複数の空白が並ぶ範囲を一つのスペースにする表現を以下に示します。
var s = txt.replace(/\s+/g, " ");
txt の文字列で、コンマ前後存在する任意数空白を削除する表現を以下に示します。
var s = txt.replace(/\s*,\s*/g, ",");