2016-10-05 4 views
-1

なぜですか "abcabcabc".match(/(abc){3}/);キャプチャグループRegex Javascript matchはなぜ2つの値を返しますか?

返品2件["abcabcabc", "abc"]?両方とも「ABCABCABC」と「ABC」

は、同様に、

["1234", "1234"]

+0

正規表現全体が一致するものは_first_値なので、次のすべてがマッチグループに一致します – vlaz

+0

TC39委員会がこれを行うことにした理由を尋ねていますか(答えられません)、またはこれらの値の意味([MDNドキュメント](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match#Return_value)で説明されています)? –

+0

'(abc){3}'は最後の1番目のキャプチャグループに1つの 'abc'シーケンスを保持します。 – revo

答えて

0

すべての正規表現が結果に格納され、その周りに暗黙のキャプチャグループ、0

を有する第2の結果は、あなたから来ていますキャプチャグループ(abc)。ほとんどのregexp実装では、そのキャプチャグループの最後の一致しか保持しません。

0

/(abc){3}/

  • 第一キャプチャグループ(abc){3}

    {3}数量子は、 - Aが唯一の最後の繰り返しをキャプチャするグループをキャプチャ繰り返し3回

    正確に一致します。繰り返しグループの周りにキャプチャグループを置き、すべての反復をキャプチャするか、データに興味がない場合はキャプチャしないグループを使用します。

    abcは文字通り(大文字と小文字を区別)

だから最初の値、すなわち"abcabcabc"、全体のマッチであるabc文字にマッチします。

第2の値は、(abc)でキャプチャされた最後の反復です。つまり、​​です。

関連する問題