2015/09/10

Javascriptの正規表現

今までわかっている気になっていた正規表現。 先日仕事で正規表現を書く機会があったのだが、うまく書けず、数時間ハマってしまったので、改めて勉強し直そうと思う。 正規表現 そもそも正規表現とは? 「文字列内で文字の組み合わせを照合するために用いられるパターン」 だそうです。 簡単に言うと、文字列内にある文字があるかどうか、など文字列をいい感じに検証したいときに便利な記述方法、なのだろうか。 正規表現は以下2つのパターンで書ける。 正規表現リテラル var reg = /hoge+a/; RegExp オブジェクトのコンストラクタ関数 var reg = new RegExp("hoge+a"); 今回はよく使用する正規表現リテラルで書いていこうと思う。 よく使う特殊文字 正規表現でマッチしている部分を見つけたいときは、必ずといっていいほど特殊文字を使用すると思う。 /^hoge+a/ このような形で。特殊文字をどれだけマスターしているかによって、正規表現を使う幅が広がってくる。 1. バックスラッシュの次の文字をエスケープしてくれる。 2. ^ 入力の先頭にマッチする。 /^a/ このようにすると、”abc”の”a”にマッチする 3. $ 入力の末尾にマッチする。 /a$/ このようにすると、”bca”の”a”にマッチする 4. * 直前の文字の 0 回以上の繰り返しにマッチする。 /ab*/ このようにすると、”abbbbccc”の”abbbb”にマッチする。 “a”にもマッチする。”bbb”ではマッチしない。 5. {n} 直前の文字がちょうど n 回出現するものにマッチする。 /a{2}/ このようにすると、”aabc”の最初の”aa”にマッチする。 “abc”にはマッチしない。 6. [xyz] 文字集合を表す。角括弧で囲まれた文字のいずれか1個にマッチする。 /[ab]/ このようにすると、”aefgb”の”a”にマッチする。 7. [^xyz] 文字集合の否定または補集合。角括弧で囲まれた文字ではない文字にマッチする。 /[^ab]/ このようにすると、”aefgb”の”e”にマッチし、一番最初の該当文字にマッチする。 他、多数存在するが、全て覚えていくのも大変なので、随時覚えていきたい。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions 正規表現の使用 正規表現は、RegExpのtestおよびexecメソッド、Stringのmatch、replace、search、およびsplitメソッドとともに使用する。 1. match 文字列中で一致するものを検索するStringのメソッド。結果情報の配列を返す。マッチしない場合はnullを返す。 var str = "abcdefg"; str.match(/[a-e]/gi); // ["a", "b", "c", "d", "e"] 2.