多くの場合、stringmatch
関数を使用して、文字列が正規表現に一致するかどうかを確認しています。
if(str.match(/{regex}/))
これに違いはありますか:
if (/{regex}/.test(str))
彼らは同じ結果を与えるようですか?
多くの場合、stringmatch
関数を使用して、文字列が正規表現に一致するかどうかを確認しています。
if(str.match(/{regex}/))
これに違いはありますか:
if (/{regex}/.test(str))
彼らは同じ結果を与えるようですか?
まず、各関数が何をするか見てみましょう。
正規表現オブジェクト. テスト(文字列)
正規表現と指定した文字列の一致を検索します。trueまたはfalseを返します。
文字列. 一致(正規表現)
文字列を正規表現と照合するときに一致を取得するために使用されます。一致する配列を返すか、一致しない
null
場合は配列を返します。
null
に評価されるのでfalse
、
if ( string.match(regex) ) {
// There was a match.
} else {
// No match.
}
性能に違いはありますか?
はい。MDN サイトで次の短いメモを見つけました。
文字列が正規表現 regexp と一致するかどうかを知る必要がある場合は、regexp.test(string) を使用します。
違いは重要ですか?
答えはイエスです。私がまとめた このjsPerfは、ブラウザーに応じて違いが〜30% 〜〜60%であることを示しています。
.test
より高速なブールチェックが必要な場合に使用します。グローバル フラグ.match
を使用する場合にすべての一致を取得するために使用します。g