2012年8月2日木曜日

JavaScriptである値がパターンにマッチしたらtrueを返す処理

単純に、RegExpオブジェクトのtest()を使えばよい。
var value = "abcdef";
var result = (/abc/).test(value); // true
以下でもOK。こっちはStringオブジェクトのmatch()を使っている。
var value = "abcdef";
var result = !!value.match(/abc/); // true
match()はマッチした結果を配列で返し、全くマッチしない場合はnullを返す。なので、単にマッチしたかどうかの結果だけを知りたい場合は、!演算子を2回使えばよい。

  • value.match(/abc/) → abc
  • !value.match(/abc/) → !abc → false
  • !!value.match(/abc/) → !!abc → !false → true

上記の!abcがfalseになるのは、abcが型変換でブーリアン型(true)になるからである。
型変換でfalseになる値は以下の通りで、それ以外はtrueである。

  • 数値0
  • 数値NaN
  • null値
  • undefined値
  • 空文字

JavaScriptのとあるソースを呼んでて、!!value.match(/abc/)なるものがあって、何やってるのかよく分からなかったからメモを残しました。単純にRegExpのtest()を使うのとどっちがいいですかね?

0 件のコメント:

コメントを投稿