1. ホーム
  2. ジャバスクリプト

[解決済み] [Solved] regex.test V.S. string.match で文字列が正規表現にマッチするかどうかが分かる

2022-03-26 08:41:15

質問

という文字列を何度も使っています。 match 関数を使って、ある文字列が正規表現にマッチするかどうかを知ることができます。

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

何か違いがあるのでしょうか。

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

同じ結果になるように見えますか?

解決方法は?

基本的な使い方

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

regexObject . テスト ( 文字列 )

正規表現と指定した文字列が一致するかどうかを検索します。戻り値 または 虚偽 .

文字列 . 一致 ( RegExp )

文字列を正規表現にマッチさせる際に、マッチを取得するために使用します。マッチした文字列を配列で返します。 null は、何もない場合

から null と評価されます。 false ,

if ( string.match(regex) ) {
  // There was a match.
} else {
  // No match.
} 


パフォーマンス

パフォーマンスに関して違いはありますか?

はい . の中にこんな短いメモがありました。 MDNサイト :

文字列が正規表現regexpにマッチするかどうかを知る必要がある場合、regexp.test(string)を使用します。

この差は大きいですか?

もう1度、答えを言います。 はい ! これは jsPerf 私がまとめたところ、その差は ~30% - ~60% ブラウザによって異なります。

まとめ

使用方法 .test より高速なブーリアン・チェックが必要な場合。使用方法 .match を使用する場合、すべてのマッチを取得するために g グローバルフラグを使用します。