JavaScriptで正規表現を使った検索方法を解説

HOME
更新日:2013.10.04
HOMEJavaScript入門 > 正規表現による検索

正規表現による検索

前のページで、正規表現を使った文字列置換の方法について簡単に触れましたが、 ここでは正規表現を使えばどんな検索が行えるか見てみたいと思います。

正規表現を使った検索のサンプル

では以下のスクリプトをHTMLのBODY内に記入してみてください。

<script>

var str = "JavaScriptで正規表現を使えば、高度な検索を行えます。";
var rep; //検索した文字列を格納する変数

//任意の文字を検索
rep = str.match(/正規表現/);
document.write(rep+"<br>"); //結果「正規表現」

//指定文字前後も含めて検索
rep = str.match(/..表現/);
document.write(rep+"<br>"); //結果「正規表現」

rep = str.match(/を.../);
document.write(rep+"<br>"); //結果「を使えば」

//指定文字の何れかを検索
rep = str.match(/[姓製正]/);
document.write(rep+"<br>"); //結果「正」

//指定文字列の何れかを検索
rep = str.match(/姓規|製規|正規/);
document.write(rep+"<br>"); //結果「正規」

//先頭文字を検索
rep = str.match(/^正規表現/);
document.write(rep+"<br>"); //結果「null」

rep = str.match(/^JavaScript/);
document.write(rep+"<br>"); //結果「JavaScript」

rep = str.match(/^..../);
document.write(rep+"<br>"); //結果「Java」

//末尾文字を検索
rep = str.match(/正規表現$/);
document.write(rep+"<br>"); //結果「null」

rep=str.match(/...$/);
document.write(rep+"<br>"); //結果「ます。」

//大文字小文字を区別しない
rep = str.match(/javascript/i);
document.write(rep+"<br>"); //結果「JavaScript」

//普通の検索は大文字小文字を区別する
rep = str.match(/javascript/);
document.write(rep+"<br>"); //結果「null」

</script>

上記サンプルの結果(別窓)

正規表現の記入

では上記のスクリプトについて見てみることにしましょう。 変数strに検索元となる文字列を指定しました。 また変数repを宣言し、検索結果の文字(列)を格納することにします。

そして検索に移りますが、最初にmatch()というのが出てきます。 これは検索にHitするとその文字列を取得する命令文です。 見つからなければnullを返します。

文字列.match(検索文字)
文字列から任意の文字を検索する。Hitすればその文字列を、しなければnullを返す。

最初は通常の文字検索です。スラッシュ「/」で囲まれた文字を検索します。 ピリオド「.」を使えば、指定文字の前後も含めて検索できます。 ピリオドの数に応じて前後の文字列を取得します。

大括弧「[ ]」を使うと、括弧内の文字の内の何れかが存在するか調べます。 文字列の場合は、 縦線「|」で区切って複数指定することで、 いずれかの文字列が存在するか調べることができます。

先頭の文字に特化した検索を行う場合は、「^」を使います。 文末に特化した検索は「$」を使います。

指定文字列をスラッシュで閉じた後ろに「i」を付けると、 大文字と小文字を区別せず検索します。通常の検索では区別します。

では正規表現の幾つかをまとめておきましょう。

/文字列/
任意の文字列を検索する
/..文字列../
任意の文字列の前後も含めて検索する
/[文字1文字2文字3]/
指定した文字の何れかを検索する
/文字列1|文字列2|文字列3/
指定した文字列の何れかを検索する
/^文字列/
先頭の文字列を検索する
/文字列$/
末尾の文字列を検索する
/文字列/i
大文字と小文字の区別をせずに検索する
/文字列/g
指定した文字列にHitする全ての文字列を取得する