WebDesign Dackel

JavaScriptで正規表現でのチェックと結果の取得を簡潔に書く

js-regexp-matches900x550

Hatena0
Google+0
Pocket0
Feedly0

はじめに

最近、会社が引っ越しました。それに合わせて自宅の引っ越しもしたので何かと忙しい毎日を過ごしていたのですが、最近になってようやく落ち着いてきました。

この記事で書きたい内容はタイトルのままで、文字列に対してあるパターンで一致していたら、その結果を使って何らかの処理をする、という場合に少し簡潔に書くためのメモです。

まずは普通にやってみる

var str = "test1234test";
var matches = str.match(/(d+)/);
if( matches ){
  console.log(matches[1] + " がマッチしました"); // => 1234 がマッチしました
}

文字列に数値が入っていたらコンソールに表示する、という簡単な処理です。これでも充分短いし意図が伝わりやすいので問題ないですよね!

ただ、以下でもう少し短い書き方をしてみます。

もう少し短く書きたい

var str = "test1234test";
if( str.match(/(d+)/) ){
  console.log(RegExp.$1 + " がマッチしました"); // => 1234 がマッチしました
}

一行分コードを短縮することができました。
match()exec()を使うとマッチング結果がRegExp.$1の様に入ってきます。1つ目のグループなら$1、2つ目なら$2という具合に$の後に数値を指定してアクセス出来ます。

結果をmatchesの様な変数に入れない分コードを短く書くことが出来ますね。

おわりに

なかなか地味な内容ですが、同じようなところで工夫している点などありましたらコメントで教えて頂けたらすっっっごく嬉しいです。