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