regex.test VS string.match で文字列が正規表現に一致するかどうかを調べる 質問する

regex.test VS string.match で文字列が正規表現に一致するかどうかを調べる 質問する

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

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

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

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

同じ結果になるようですね?

ベストアンサー1

基本的な使い方

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

正規表現オブジェクトテスト

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

おすすめ記事