RegExp の exec() 関数と String の match() 関数の違いは何ですか? 質問する

RegExp の exec() 関数と String の match() 関数の違いは何ですか? 質問する

これを実行すると:

/([^\/]+)+/g.exec('/a/b/c/d');

私はこれを理解します:

["a", "a"]

しかし、これを実行すると:

'/a/b/c/d'.match(/([^\/]+)+/g);

すると、次のような期待通りの結果が得られます。

["a", "b", "c", "d"]

違いは何ですか?

ベストアンサー1

execグローバル正規表現はループ内で使用されることを意図しており、一致したすべての部分式を取得します。つまり、

var re = /[^\/]+/g;
var match;

while (match = re.exec('/a/b/c/d')) {
    // match is now the next match, in array form.
}

// No more matches.

String.matchこれを実行し、キャプチャされたグループを破棄します。

おすすめ記事