331

多くの場合、stringmatch関数を使用して、文字列が正規表現に一致するかどうかを確認しています。

if(str.match(/{regex}/))

これに違いはありますか:

if (/{regex}/.test(str))

彼らは同じ結果を与えるようですか?

4

2 に答える 2

507

基本的な使い方

まず、各関数が何をするか見てみましょう。

正規表現オブジェクト. テスト(文字列)

正規表現と指定した文字列の一致を検索します。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

于 2012-06-07T21:26:26.090 に答える