JavaScript/RegExp

出典: フリー教科書『ウィキブックス(Wikibooks)』
移動: 案内検索

正規表現(せいきひょうげん、regular expression)とは、パターンマッチです。JavaScriptの正規表現はPerl正規表現に影響を受けています。

正規表現リテラル[編集]

正規表現は、スラッシュ"/"の間に記述します。フラグを用いる場合は、末尾のスラッシュに続けて記述します。

JavaScriptの正規表現のフラグ
フラグ 意味
g 繰り返しマッチさせる
i 大文字・小文字を区別しない
m 文字列を複数行として扱う
y(非標準) マッチの起点を変更する

.を空白文字にもマッチさせるsフラグは存在しません。代わりに[\s\S]などを使用してください。

パターンマッチ[編集]

JavaScriptで正規表現によるパターンマッチを行う方法はいくつかあります。単に文字列の中にパターンが含まれているかどうかのみを知りたい場合は、testメソッドを使用します。

var matches = /regexp/.test('string');

文字列の中から特定のパターンに一致する部分を抽出したい場合は、Stringオブジェクトのmatchメソッドを使います。

var matches = 'string'.match(/regexp/);

そのほかにも、RegExpオブジェクトのexecメソッドが存在します。大まかに言って、マッチした結果の詳細を取り出したい場合はexecメソッドを使用するという使い分けができます。

Stringオブジェクトには、文字列の中のパターンに一致する部分を別の文字列で置換する、replaceメソッドや、パターンに一致する位置を取得する、searchメソッドがあります。

RegExp[編集]

JavaScriptの正規表現オブジェクトの実体はRegExpオブジェクトのインスタンスです。RegExpオブジェクトのコンストラクタは第一引数に正規表現、第二引数にフラグを受け取ります。 第一引数の正規表現に\d\sなどのメタ文字が含まれる場合は、バックスラッシュが文字列リテラルのエスケープ文字として扱われないように、\\とエスケープする必要があります。

var regexp = new RegExp('\\d+', 'gim');

PerlのquotemetaRubyRegExp.quoteのように、()や[]など正規表現のメタ文字と解釈される可能性のある文字をエスケープして返す関数は、Stringオブジェクトのreplaceメソッドを使用して簡単に作成することができます。

function quote(str){
    return str.replace(/\W/g, function($0){
        return '\\' + $0;
    });
};
 
alert( quote('()') ); // 「\(\)」と表示

プロパティ[編集]

RegExpオブジェクトのプロトタイプです。
このページ「JavaScript/RegExp」は、書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にノートへどうぞ。